declare

(PHP 4, PHP 5, PHP 7)

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 yönergesi (Daha fazla bilgi edinmek için aşağıya, ticks yönergesine bakınız.), encoding yönergesi ve strict_types yönergesi. Daha fazla bilgi için işlev değiştirgeleri sayfasındaki strict bölümüne bakınız.

Sürüm: Açıklama
5.3.0 encoding yönergesi eklendi.
7.0.0 strict_types yönergesi eklendi.

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 değiştirge 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 1

<?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");

$a 1;

if (
$a 0) {
        
$a += 2;
        print(
$a);
}
?>

Örnek 2 - Tik kullanım örneği 2

<?php

function tik_eylemci()
{
    echo 
"tik_eylemci() çağrıldı\n" ;
}

$a 1;
tik_eylemci();

if (
$a 0) {
        
$a += 2;
        
tik_eylemci();
        print(
$a);
        
tik_eylemci();
}
tik_eylemci();

?>

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

Karakter kodlaması bildirim değeri, PHP, --enable-zend-multibyte yapılandırma seçeneği ile derlenmediği takdirde PHP 5.3'te yoksayılır. PHP 6.0'da --enable-zend-multibyte etkindir.

Dikkat: PHP, --enable-zend-multibyte'ın PHP'yi derlemek için kullanılıp kullanılmadığını phpinfo() dışında göstermez.

Ayrıca bak: zend.script_encoding.