From b93b41e35fc2e0f8b1746b9d708057a47bea7ba9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nilg=C3=BCn=20Belma=20Bug=C3=BCner?= Date: Fri, 6 Oct 2023 11:54:52 +0300 Subject: [PATCH] update for sync with English docs --- language-snippets.ent | 42 +- language/operators.xml | 2902 +---------------- language/operators/arithmetic.xml | 126 + language/operators/array.xml | 162 + language/operators/assignment.xml | 275 ++ language/operators/bitwise.xml | 687 ++++ language/operators/comparison.xml | 571 ++++ language/operators/errorcontrol.xml | 103 + language/operators/execution.xml | 70 + language/operators/increment.xml | 170 + language/operators/logical.xml | 130 + language/operators/precedence.xml | 445 +++ language/operators/string.xml | 60 + language/operators/type.xml | 293 ++ language/types.xml | 4 +- language/types/declarations.xml | 8 +- language/types/numeric-strings.xml | 4 +- language/types/type-system.xml | 8 +- language/types/{literal.xml => value.xml} | 4 +- .../xml/functions/xml-parser-get-option.xml | 21 +- .../xml/functions/xml-parser-set-option.xml | 31 +- .../xml-set-character-data-handler.xml | 45 +- .../xml/functions/xml-set-default-handler.xml | 50 +- .../xml/functions/xml-set-element-handler.xml | 90 +- .../xml-set-end-namespace-decl-handler.xml | 47 +- .../xml-set-external-entity-ref-handler.xml | 72 +- .../xml-set-notation-decl-handler.xml | 59 +- reference/xml/functions/xml-set-object.xml | 46 +- ...xml-set-processing-instruction-handler.xml | 73 +- .../xml-set-start-namespace-decl-handler.xml | 50 +- .../xml-set-unparsed-entity-decl-handler.xml | 67 +- 31 files changed, 3404 insertions(+), 3311 deletions(-) create mode 100644 language/operators/arithmetic.xml create mode 100644 language/operators/array.xml create mode 100644 language/operators/assignment.xml create mode 100644 language/operators/bitwise.xml create mode 100644 language/operators/comparison.xml create mode 100644 language/operators/errorcontrol.xml create mode 100644 language/operators/execution.xml create mode 100644 language/operators/increment.xml create mode 100644 language/operators/logical.xml create mode 100644 language/operators/precedence.xml create mode 100644 language/operators/string.xml create mode 100644 language/operators/type.xml rename language/types/{literal.xml => value.xml} (91%) diff --git a/language-snippets.ent b/language-snippets.ent index 16f711424..7c8ea64f1 100644 --- a/language-snippets.ent +++ b/language-snippets.ent @@ -1,5 +1,5 @@ - + @@ -407,6 +407,16 @@ xmlns="http://docbook.org/ns/docbook">Bu işlevin kullanımı PHP 8.2.0 itibariyle ÖNERİLMEMEKTEDİR. Bu işleve kesinlikle güvenilmemelidir.'> +Bu özelliğin kullanımı PHP 8.3.0 +itibariyle ÖNERİLMEMEKTEDİR. +Bu özelliğe kesinlikle güvenilmemelidir.'> + +Bu işlevin kullanımı PHP 8.3.0 +itibariyle ÖNERİLMEMEKTEDİR. +Bu işleve kesinlikle güvenilmemelidir.'> + kesinlikle KALDIRILACAKTIR.'> @@ -4827,6 +4837,36 @@ xmlns="http://docbook.org/ns/docbook">uopz 5.0.0 sürümünde bu işlev PECL'de KALDIRILMIŞTIR.'> + + ayrıştırıcı + + + XML ayrıştırıcı. + + +'> + + + &null; veya boş dizge belirtilirse işleyici bunu varsayılan duruma getirir. + + + işleyici callable türündeyse, + işleyici işlev olarak kullanılır. + + + işleyici string türündeyse, + xml_set_object ile atanmış bir nesnenin + yöntem ismi olabilir. +'> + + + ayrıştırıcı + + + İşleyiciyi çağıran XML ayrıştırıcı. + + +'> 8.0.0 diff --git a/language/operators.xml b/language/operators.xml index 5899a3f8f..c4b7f1f66 100644 --- a/language/operators.xml +++ b/language/operators.xml @@ -1,2863 +1,47 @@ - - - İşleçler - - 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 - ++ (arttı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&listendand; - hata denetimi - - - - soldan - instanceof - - Tür - - - - (yok) - ! - - mantıksal - - - - soldan - - * - / - % - - - aritmetik - - - - soldan - - + - - - . - - - aritmetik - (iki terimli + ve -), - dizi&listendand; - 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&listendand; - 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 - - - - -
-
- - - - Öncelik yönü - - $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. - - - Tanımsız değerlendirme sırası - - -]]> - - - - <literal>+</literal>, <literal>-</literal> ve <literal>.</literal> - aynı önceliğe sahiptir (PHP 8.0.0 öncesi) - - -]]> - - &example.outputs; - - - - - - - - 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. - - - - &reftitle.changelog; - - - - - &Version; - &Description; - - - - - 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: - - - -]]> - - - - - - &reftitle.seealso; - - - Matematik işlevleri - - - -
- - - 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: - - - -]]> - - - - - 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: - - - -]]> - - - - - 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. - - - - - Gönderimli atama - - -]]> - - - - - 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: - - - -]]> - - &example.outputs; - - - - - - - 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 - - - - - - - - &reftitle.seealso; - - - 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 - - - - - - - - Tamsayılar üzerinde bitsel işlemler - - -]]> - - &example.outputs; - - - - - - - - - Dizgeler üzerinde bitsel işlemler - - -]]> - - - - - - - Tamsayılarda bit kaydırma - -> $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"; -} -?> -]]> - - &example.outputs.32bit; - -> 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ı -]]> - - &example.outputs.64bit; - -> 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ı -]]> - - - - - - PHP_INT_MAX'ın ötesindeki sayılar üzerinde bitsel - işlemler için gmp eklentisindeki - işlevler kullanılmalıdır. - - - - - &reftitle.seealso; - - - - 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. - - - - - 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: - - - -]]> - - &example.outputs.7; - - - - &example.outputs.8; - - - - - - - - - - - 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 - - - -
- - - - Bool/null karşılaştırması - - -]]> - - - - - - - - - Özetle Standard Dizi Karşılaştırması - - 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 -} -?> -]]> - - - - - - 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. - - - - - 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. - - - - - &reftitle.seealso; - - - strcasecmp - strcmp - Dizi - işleçleri - Türler - - - - - - Üç Terimli İşleç - - Diğer bir karşılaştırma işleci ?: (üç terimli) - işlecidir. - - - Öntanımlı bir değer atama - - -]]> - - - (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. - - - - Üç 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. - - - - - Üç 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. - - - İç içe üç terimli davranışı - - -]]> - - - - - - - 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. - - - Kısa üç terimli zinciri - - -]]> - - - - - - - - Null kaynaşma işleci - - Diğer bir kullanışlı işleç kısaltması olan "??" null kaynaşma işleci - adını alır. - - - Öntanımlı değer atama - - -]]> - - - (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. - - - - 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. - - - - - 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. - - - -]]> - - - - - Null kaynaşma işleci basit iç içeliğe izin verir: - - - İçiçe null kaynaşma işleci - - -]]> - - - - - - -
- - - 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. - - - - - 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 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. - - - - - -]]> - - - - - - 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. - - - - - 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. - - - - - &reftitle.seealso; - - - 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. - - -$output"; -?> -]]> - - - - - - shell_exec işlevi etkin - değilse, çalıştırma işleci etkin değildir. - - - - - Bazı başka dillerin aksine, tek tırnak imlerinin çift tırnaklı dizeler içinde - özel bir anlamı yoktur. - - - - - &reftitle.seealso; - - - Program Çalıştırma - İşlevleri - popen - proc_open - PHP'nin komut satırından - kullanılması - - - - - - - Arttırım ve Eksiltim İşleçleri - - PHP, C tarzı önceden ve sonradan arttırım ve eksiltim işleçlerini - destekler. - - - - Arttırım ve eksiltim işleçleri sadece sayıları ve dizeleri etkiler. - Diziler, nesneler, mantıksallar ve özkaynaklar etkilenmez. - &null; değerini eksiltmenin bir etkisi yoktur fakat arttırmanın sonucu - 1'dir. - - - - Arttırım ve Eksiltim İşleçleri - - - - Örnek - İsim - Etkisi - - - - - ++$a - Önceden arttırım - $a bir arttırıldıktan sonra - döndürülür. - - - $a++ - Sonradan arttırım - $a döndürüldükten sonra değeri bir - arttı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: - - -Sonradan arttırım\n"; -$a = 5; -echo "5 olmalı: " . $a++ . "
\n"; -echo "6 olmalı: " . $a . "
\n"; - -echo "

Önceden arttırım

\n"; -$a = 5; -echo "6 olmalı: " . ++$a . "
\n"; -echo "6 olmalı: " . $a . "
\n"; - -echo "

Sonradan eksiltim

\n"; -$a = 5; -echo "5 olmalı: " . $a-- . "
\n"; -echo "4 olmalı: " . $a . "
\n"; - -echo "

Önceden eksiltim

\n"; -$a = 5; -echo "4 olmalı: " . --$a . "
\n"; -echo "4 olmalı: " . $a . "
\n"; -?> -]]> -
-
-
- - PHP, karakter değişkenleri üzerinde çalışırken C'nin değil Perl'in - yöntemlerini izler. Örneğin, PHP ve Perl'de - $a = 'Z'; $a++; ifadesi $a - içinde 'AA' değerini döndürürken, C'de a = 'Z'; a++; - ifadesi a içinde'[' döndürür. 'Z' - için ASCII değer 90, '[' için 91'dir. - Karakterlerin arttırılabileceğine fakat azaltılamayacağına ve sadece - ASCII harflerin ve rakamların (a-z ve A-Z, 0-9) desteklendiğine dikkat - edilmelidir. Diğer karakterler üzerinde arttırım ve eksiltim etkisiz olup - özgün değer değişmeden döndürürlür. - - - Karakter değişkenleri üzerinde aritmetik işlemler - - -]]> - - &example.outputs; - - - - - - - Mantıksal değerlere arttırım ve eksiltim uygulamanın bir etkisi olmaz. - -
- - - 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.) - - - - Örneklerle mantıksal işleçler - - -]]> - - &example.outputs.similar; - - - - -
- - - 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. - - - - - - -]]> - - - - - - &reftitle.seealso; - - - 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. - - - - - "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: - - - 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. - - - - - Dizilerin karşılaştırılması - - "armut", "0" => "elma"); - -var_dump($a == $b); // bool(true) -var_dump($a === $b); // bool(false) -?> -]]> - - - - - - &reftitle.seealso; - - - 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: - - - <literal>instanceof</literal> ve sınıflar - - -]]> - - &example.outputs; - - - - - - - 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: - - - Miras alınan sınıflar ve <literal>instanceof</literal> kullanımı - - - -]]> - - &example.outputs; - - - - - - - Bir nesne bir sınıfın örneği değilse bunu sınamak için mantıksal değil işleci - kullanılabilir. - - - Bir sınıfın örneği olmayan bir sınıfın - <literal>instanceof</literal> ile sınanması - - -]]> - - &example.outputs; - - - - - - - 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: - - - Arayüzler için <literal>instanceof</literal> kullanımı - - -]]> - - &example.outputs; - - - - - - - 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: - - - Başka değişkenlerle <literal>instanceof</literal> kullanımı - - -]]> - - &example.outputs; - - - - - - - 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. - - - Değişkenleri sınamak için <literal>instanceof</literal> kullanımı - - -]]> - - &example.outputs; - - - - - - - PHP 7.3.0 ve sonrasında, instanceof işlecinin sol - tarafında sabitlere izin verilmektedir. - - - Sabit kullanımını sınamak için <literal>instanceof</literal> kullanımı - - -]]> - - &example.outputs.73; - - - - - - - PHP 8.0.0 ve sonrasında, instanceof keyfi ifadelerde - kullanılabilmektedir. Bu ifadeler parantezlerle sarmalanmalı - ve bir dizge üretmelidir. - - - - Keyfi ifadelerde <literal>instanceof</literal> kullanımı - - -]]> - - &example.outputs.8; - - - - - - - instanceof işleci yerine kullanılabilecek - bir işlev de vardır: is_a - - - - &reftitle.seealso; - - - get_class - is_a - - - - -
+ + + İşleçler + + 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. + + + &language.operators.precedence; + &language.operators.arithmetic; + &language.operators.increment; + &language.operators.assignment; + &language.operators.bitwise; + &language.operators.comparison; + &language.operators.errorcontrol; + &language.operators.execution; + &language.operators.logical; + &language.operators.string; + &language.operators.array; + &language.operators.type; + + + + 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: + + + +]]> + + + + + + &reftitle.seealso; + + + Matematik işlevleri + + + +
+ + diff --git a/language/operators/array.xml b/language/operators/array.xml new file mode 100644 index 000000000..8f65830f4 --- /dev/null +++ b/language/operators/array.xml @@ -0,0 +1,162 @@ + + + + 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. + + + + + "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: + + + 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. + + + + - Dizilerin karşılaştırılması + + "armut", "0" => "elma"); + +var_dump($a == $b); // bool(true) +var_dump($a === $b); // bool(false) +?> +]]> + + + + + + &reftitle.seealso; + + + array + türü + Dizi İşlevleri + + + +
+ + diff --git a/language/operators/assignment.xml b/language/operators/assignment.xml new file mode 100644 index 000000000..b4cace578 --- /dev/null +++ b/language/operators/assignment.xml @@ -0,0 +1,275 @@ + + + + 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: + + + +]]> + + + + + 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: + + + +]]> + + + + + 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. + + + + - Gönderimli atama + + +]]> + + + + + 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: + + + +]]> + + &example.outputs; + + + + + + + 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 + + + + + + + + &reftitle.seealso; + + + aritmetik + işleçler + bitsel + işleçler + null + birleşim işleçleri + + + + + + diff --git a/language/operators/bitwise.xml b/language/operators/bitwise.xml new file mode 100644 index 000000000..4d2fa577c --- /dev/null +++ b/language/operators/bitwise.xml @@ -0,0 +1,687 @@ + + + + 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 + + + + + + + - Tamsayılar üzerinde bitsel işlemler + + +]]> + + &example.outputs; + + + + + + + + - Dizgeler üzerinde bitsel işlemler + + +]]> + + + + + + - Tamsayılarda bit kaydırma + +> $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"; +} +?> +]]> + + &example.outputs.32bit; + +> 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ı +]]> + + &example.outputs.64bit; + +> 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ı +]]> + + + + + + PHP_INT_MAX'ın ötesindeki sayılar üzerinde bitsel + işlemler için gmp eklentisindeki + işlevler kullanılmalıdır. + + + + + &reftitle.seealso; + + + + pack + unpack + gmp_and + gmp_or + gmp_xor + gmp_testbit + gmp_clrbit + + + +
+ + diff --git a/language/operators/comparison.xml b/language/operators/comparison.xml new file mode 100644 index 000000000..104265298 --- /dev/null +++ b/language/operators/comparison.xml @@ -0,0 +1,571 @@ + + + + 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. + + + + + 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: + + + +]]> + + &example.outputs.7; + + + + &example.outputs.8; + + + + + + + + + + + 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 + + + +
+ + + - Bool/null karşılaştırması + + +]]> + + + + + + + + - Özetle Standard Dizi Karşılaştırması + + 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 +} +?> +]]> + + + + + + 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. + + + + + 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. + + + + + &reftitle.seealso; + + + strcasecmp + strcmp + Dizi + işleçleri + Türler + + + + + + Üç Terimli İşleç + + Diğer bir karşılaştırma işleci ?: (üç terimli) + işlecidir. + + - Öntanımlı bir değer atama + + +]]> + + + (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. + + + + Üç 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. + + + + + Üç 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. + + - İç içe üç terimli davranışı + + +]]> + + + + + + + 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. + + - Kısa üç terimli zinciri + + +]]> + + + + + + + + Null kaynaşma işleci + + Diğer bir kullanışlı işleç kısaltması olan "??" null kaynaşma işleci + adını alır. + + - Öntanımlı değer atama + + +]]> + + + (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. + + + + 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. + + + + + 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. + + + +]]> + + + + + Null kaynaşma işleci basit iç içeliğe izin verir: + + - İçiçe null kaynaşma işleci + + +]]> + + + + + +
+ + diff --git a/language/operators/errorcontrol.xml b/language/operators/errorcontrol.xml new file mode 100644 index 000000000..922b3549b --- /dev/null +++ b/language/operators/errorcontrol.xml @@ -0,0 +1,103 @@ + + + + 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. + + + + + 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 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. + + + + + +]]> + + + + + + 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. + + + + + 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. + + + + + &reftitle.seealso; + + + error_reporting + Hata İşleme İşlevleri + + + + + + diff --git a/language/operators/execution.xml b/language/operators/execution.xml new file mode 100644 index 000000000..2c7c84ef7 --- /dev/null +++ b/language/operators/execution.xml @@ -0,0 +1,70 @@ + + + + Ç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. + + +$output"; +?> +]]> + + + + + + shell_exec işlevi etkin + değilse, çalıştırma işleci etkin değildir. + + + + + Bazı başka dillerin aksine, tek tırnak imlerinin çift tırnaklı dizeler içinde + özel bir anlamı yoktur. + + + + + &reftitle.seealso; + + + Program Çalıştırma + İşlevleri + popen + proc_open + PHP'nin komut satırından + kullanılması + + + + + + diff --git a/language/operators/increment.xml b/language/operators/increment.xml new file mode 100644 index 000000000..cfdd08f81 --- /dev/null +++ b/language/operators/increment.xml @@ -0,0 +1,170 @@ + + + + Arttırım ve Eksiltim İşleçleri + + PHP, C tarzı önceden ve sonradan arttırım ve eksiltim işleçlerini + destekler. + + + + Arttırım ve eksiltim işleçleri sadece sayıları ve dizeleri etkiler. + Diziler, nesneler, mantıksallar ve özkaynaklar etkilenmez. + &null; değerini eksiltmenin bir etkisi yoktur fakat arttırmanın sonucu + 1'dir. + + + + Arttırım ve Eksiltim İşleçleri + + + + Örnek + İsim + Etkisi + + + + + ++$a + Önceden arttırım + $a bir arttırıldıktan sonra + döndürülür. + + + $a++ + Sonradan arttırım + $a döndürüldükten sonra değeri bir + arttı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: + + +Sonradan arttırım\n"; +$a = 5; +echo "5 olmalı: " . $a++ . "
\n"; +echo "6 olmalı: " . $a . "
\n"; + +echo "

Önceden arttırım

\n"; +$a = 5; +echo "6 olmalı: " . ++$a . "
\n"; +echo "6 olmalı: " . $a . "
\n"; + +echo "

Sonradan eksiltim

\n"; +$a = 5; +echo "5 olmalı: " . $a-- . "
\n"; +echo "4 olmalı: " . $a . "
\n"; + +echo "

Önceden eksiltim

\n"; +$a = 5; +echo "4 olmalı: " . --$a . "
\n"; +echo "4 olmalı: " . $a . "
\n"; +?> +]]> +
+
+
+ + PHP, karakter değişkenleri üzerinde çalışırken C'nin değil Perl'in + yöntemlerini izler. Örneğin, PHP ve Perl'de + $a = 'Z'; $a++; ifadesi $a + içinde 'AA' değerini döndürürken, C'de a = 'Z'; a++; + ifadesi a içinde'[' döndürür. 'Z' + için ASCII değer 90, '[' için 91'dir. + Karakterlerin arttırılabileceğine fakat azaltılamayacağına ve sadece + ASCII harflerin ve rakamların (a-z ve A-Z, 0-9) desteklendiğine dikkat + edilmelidir. Diğer karakterler üzerinde arttırım ve eksiltim etkisiz olup + özgün değer değişmeden döndürürlür. + + - Karakter değişkenleri üzerinde aritmetik işlemler + + +]]> + + &example.outputs; + + + + + + + Mantıksal değerlere arttırım ve eksiltim uygulamanın bir etkisi olmaz. + +
+ + diff --git a/language/operators/logical.xml b/language/operators/logical.xml new file mode 100644 index 000000000..f5f6ce37f --- /dev/null +++ b/language/operators/logical.xml @@ -0,0 +1,130 @@ + + + + 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.) + + + - Örneklerle mantıksal işleçler + + +]]> + + &example.outputs.similar; + + + + +
+ + diff --git a/language/operators/precedence.xml b/language/operators/precedence.xml new file mode 100644 index 000000000..c3e6f8615 --- /dev/null +++ b/language/operators/precedence.xml @@ -0,0 +1,445 @@ + + + + İş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&listendand; + hata denetimi + + + + soldan + instanceof + + Tür + + + + (yok) + ! + + mantıksal + + + + soldan + + * + / + % + + + aritmetik + + + + soldan + + + + - + . + + + aritmetik + (iki terimli + ve -), + dizi&listendand; + 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&listendand; + 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 + + + + +
+
+ + + - Öncelik yönü + + $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. + + - Tanımsız değerlendirme sırası + + +]]> + + + + <literal>+</literal>, <literal>-</literal> ve <literal>.</literal> + aynı önceliğe sahiptir (PHP 8.0.0 öncesi) + + +]]> + + &example.outputs; + + + + + + + + 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. + + + + &reftitle.changelog; + + + + + &Version; + &Description; + + + + + 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. + + + + + + +
+ + diff --git a/language/operators/string.xml b/language/operators/string.xml new file mode 100644 index 000000000..10d957da3 --- /dev/null +++ b/language/operators/string.xml @@ -0,0 +1,60 @@ + + + + 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. + + + + + + +]]> + + + + + + &reftitle.seealso; + + + string + türü + Dizge İşlevleri + + + + + + diff --git a/language/operators/type.xml b/language/operators/type.xml new file mode 100644 index 000000000..4d864437c --- /dev/null +++ b/language/operators/type.xml @@ -0,0 +1,293 @@ + + + + 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: + + - <literal>instanceof</literal> ve sınıflar + + +]]> + + &example.outputs; + + + + + + + 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: + + - Miras alınan sınıflar ve <literal>instanceof</literal> kullanımı + + + +]]> + + &example.outputs; + + + + + + + Bir nesne bir sınıfın örneği değilse bunu sınamak için mantıksal değil işleci + kullanılabilir. + + - Bir sınıfın örneği olmayan bir sınıfın + <literal>instanceof</literal> ile sınanması + + +]]> + + &example.outputs; + + + + + + + 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: + + - Arayüzler için <literal>instanceof</literal> kullanımı + + +]]> + + &example.outputs; + + + + + + + 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: + + - Başka değişkenlerle <literal>instanceof</literal> kullanımı + + +]]> + + &example.outputs; + + + + + + + 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. + + - Değişkenleri sınamak için <literal>instanceof</literal> kullanımı + + +]]> + + &example.outputs; + + + + + + + PHP 7.3.0 ve sonrasında, instanceof işlecinin sol + tarafında sabitlere izin verilmektedir. + + - Sabit kullanımını sınamak için <literal>instanceof</literal> kullanımı + + +]]> + + &example.outputs.73; + + + + + + + PHP 8.0.0 ve sonrasında, instanceof keyfi ifadelerde + kullanılabilmektedir. Bu ifadeler parantezlerle sarmalanmalı + ve bir dizge üretmelidir. + + + - Keyfi ifadelerde <literal>instanceof</literal> kullanımı + + +]]> + + &example.outputs.8; + + + + + + + instanceof işleci yerine kullanılabilecek + bir işlev de vardır: is_a + + + + &reftitle.seealso; + + + get_class + is_a + + + + + + diff --git a/language/types.xml b/language/types.xml index 30723eea3..855b1df32 100644 --- a/language/types.xml +++ b/language/types.xml @@ -1,5 +1,5 @@ - + Türler @@ -129,7 +129,7 @@ int(16) &language.types.void; &language.types.never; &language.types.relative-class-types; - &language.types.literal; + &language.types.value; &language.types.iterable; &language.types.declarations; &language.types.type-juggling; diff --git a/language/types/declarations.xml b/language/types/declarations.xml index 72d8ad67d..a66d0c27d 100644 --- a/language/types/declarations.xml +++ b/language/types/declarations.xml @@ -1,5 +1,5 @@ - + Tür bildirimleri @@ -38,6 +38,12 @@ + + 8.3.0 + + Sınıf, arayüz ve nitelik sabit türleri için destek eklendi. + + 8.2.0 diff --git a/language/types/numeric-strings.xml b/language/types/numeric-strings.xml index a8f0653c4..fdebfd17d 100644 --- a/language/types/numeric-strings.xml +++ b/language/types/numeric-strings.xml @@ -1,5 +1,5 @@ - + Sayısal Dizeler @@ -16,7 +16,7 @@ - + Tür Sistemi @@ -16,7 +16,7 @@ olarak yazılabilir. - + Temel türler Bazı temel türler, dille sıkı bir şekilde bütünleşmiş yerleşik türler @@ -76,7 +76,7 @@ - Kendisi tür olanlar + Kendisi tür olanlar @@ -113,7 +113,7 @@ Birleşim türleri - Basit türleri birleşik türler halinde birleştirmek mümkündür. + 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: diff --git a/language/types/literal.xml b/language/types/value.xml similarity index 91% rename from language/types/literal.xml rename to language/types/value.xml index f44c6fef5..40e7cd6a5 100644 --- a/language/types/literal.xml +++ b/language/types/value.xml @@ -1,6 +1,6 @@ - - + + false ve true diff --git a/reference/xml/functions/xml-parser-get-option.xml b/reference/xml/functions/xml-parser-get-option.xml index 8d9fc62c8..1950bfbf9 100644 --- a/reference/xml/functions/xml-parser-get-option.xml +++ b/reference/xml/functions/xml-parser-get-option.xml @@ -1,20 +1,20 @@ - + xml_parser_get_option - XML çözümleyici seçeneklerini döndürür + XML ayrıştırıcı seçeneklerini döndürür &reftitle.description; - stringintxml_parser_get_option - XMLParserçözümleyici + stringintboolxml_parser_get_option + XMLParserayrıştırıcı intseçenek - Belirtilen XML çözümleyici seçeneğinin değerini döndürür. + Belirtilen XML ayrıştırıcı seçeneğinin değerini döndürür. @@ -23,7 +23,7 @@ - çözümleyici + ayrıştırıcı XMLParser nesnesi. @@ -50,8 +50,7 @@ &reftitle.returnvalues; - çözümleyici geçerli değilse &false;, - aksi takdirde seçeneğin değeri döner. + Seçeneğin değeri döner. @@ -78,6 +77,12 @@ + + 8.3.0 + + İşlev ikilik seçenekler için artık ikilik sonuç döndürüyor. + + &xml.changelog.parser-param; 8.0.0 diff --git a/reference/xml/functions/xml-parser-set-option.xml b/reference/xml/functions/xml-parser-set-option.xml index 320d1c5c4..b5ea8b223 100644 --- a/reference/xml/functions/xml-parser-set-option.xml +++ b/reference/xml/functions/xml-parser-set-option.xml @@ -1,21 +1,21 @@ - + xml_parser_set_option - XML çözümleyici seçeneklerini belirler + XML ayrıştırıcı seçeneklerini belirler &reftitle.description; boolxml_parser_set_option - XMLParserçözümleyici + XMLParserayrıştırıcı intseçenek stringintdeğer - XML çözümleyici seçeneklerinden birine değer atar. + XML ayrıştırıcı seçeneklerinden birine değer atar. @@ -24,7 +24,7 @@ - çözümleyici + ayrıştırıcı XMLParser nesnesi. @@ -40,7 +40,7 @@ Kullanılabilecek seçenekler: - XML çözümleyici seçenekleri + XML ayrıştırıcı seçenekleri @@ -52,7 +52,7 @@ XML_OPTION_CASE_FOLDING - integer + bool Büyük harfe dönüşüm yapılıp yapılmayacağını belirler. Öntanımlı olarak büyük harfe @@ -69,7 +69,7 @@ XML_OPTION_SKIP_WHITE - integer + bool Boşluk karakterlerinden oluşan değerlerin atlanıp atlanmayacağı belirtilir. @@ -79,7 +79,7 @@ XML_OPTION_TARGET_ENCODING string - XML çözümleyci tarafından kullanılacak hedef kodlamayı belirler. Öntanımlı olarak, xml_parser_create tarafından kullanılan kaynak kodlamasıyla aynıdır. Desteklenen hedef @@ -108,8 +108,7 @@ &reftitle.returnvalues; - çözümleyici olarak geçerli bir çözümleyici - belirtilmemişse &false;, aksi takdirde seçenekler atanarak &true; döner. + &return.success; @@ -136,6 +135,16 @@ + + 8.3.0 + + değer bağımsız değişkeni artık ikilik + değerleri de kabul ediyor. + XML_OPTION_CASE_FOLDING ve + XML_OPTION_SKIP_WHITE seçenekleri artık + ikil seçeneklerdir. + + &xml.changelog.parser-param; diff --git a/reference/xml/functions/xml-set-character-data-handler.xml b/reference/xml/functions/xml-set-character-data-handler.xml index 82b8da14a..feedc8585 100644 --- a/reference/xml/functions/xml-set-character-data-handler.xml +++ b/reference/xml/functions/xml-set-character-data-handler.xml @@ -1,5 +1,5 @@ - + xml_set_character_data_handler @@ -10,11 +10,11 @@ &reftitle.description; truexml_set_character_data_handler - XMLParserçözümleyici + XMLParserayrıştırıcı callableişleyici - çözümleyici ile belirtilen XML çözümleyici için + ayrıştırıcı ile belirtilen XML ayrıştırıcı için karakter verisi işleyici belirler. @@ -23,45 +23,25 @@ &reftitle.parameters; - - çözümleyici - - - Karakter veri işleyici işlevini ayarlamak için XML çözümleyiciye - başvuru. - - - + &xml.parser.param; işleyici + &xml.handler.description; - xml_parse işlevi - çözümleyici için çağrıldığında mevcut olması - gereken işlevin ismini içeren dizge. - - - İsmi işleyici ile belirtilen işlevin iki - bağımsız değişken kabul etmesi gerekir: + İsmi işleyici ile belirtilen işlev şuna benzemelidir: - işleyici - XMLParserçözümleyici + voidişleyici + XMLParserayrıştırıcı stringveri - - çözümleyici - - - İlk bağımsız değişken, işleyici işlevi çağıran XML çözümleyici nesnesidir. - - - + &xml.handler.parser.param; veri - İkinci bağımsız değişken olan veri, karakter verisini dizge olarak içerir. + Karakter verisini dizge olarak içerir. @@ -72,11 +52,6 @@ ayrı çağrılır. Her bölümde defalarca çağrılabilir (örneğin, ascii olmayan dizgelerde). - - işleyici bağımsız değişkeninde işlev olarak boş bir - dizge veya &false; belirtilirse ilgili işleyici iptal edilir. - - ¬e.func-callback; diff --git a/reference/xml/functions/xml-set-default-handler.xml b/reference/xml/functions/xml-set-default-handler.xml index d9e3d8b2c..d4862078a 100644 --- a/reference/xml/functions/xml-set-default-handler.xml +++ b/reference/xml/functions/xml-set-default-handler.xml @@ -1,5 +1,5 @@ - + xml_set_default_handler @@ -10,11 +10,11 @@ &reftitle.description; truexml_set_default_handler - XMLParserçözümleyici + XMLParserayrıştırıcı callableişleyici - çözümleyici ile belirtilen XML çözümleyici için + ayrıştırıcı ile belirtilen XML ayrıştırıcı için öntanımlı işleyici belirler. @@ -23,60 +23,34 @@ &reftitle.parameters; - - çözümleyici - - - Öntanımlı işleyiciyi ayarlamak için XML çözümleyiciye başvuru. - - - + &xml.parser.param; işleyici + &xml.handler.description; - xml_parse işlevi - çözümleyici için çağrıldığında mevcut olması - gereken işlevin ismini içeren dizge. - - - İsmi işleyici ile belirtilen işlevin iki - bağımsız değişken kabul etmesi gerekir: + İsmi işleyici ile belirtilen işlevin şuna benzemesi gerekir: - işleyici - XMLParserçözümleyici + voidişleyici + XMLParserayrıştırıcı stringveri - - çözümleyici - - - İlk bağımsız değişken, işleyici işlevi çağıran XML çözümleyicinin - tanıtıcısıdır. - - - + &xml.handler.parser.param; veri - İkinci bağımsız değişken olan veri, karakter - verisini içerir. Dizge, XML bildirimi, belge türü bildirimi veya - diğer işleyiciler tarafından ele alınmayan başka bir verileri - içerebilir. + veri, karakter verisini içerir. Dizge, + XML bildirimi, belge türü bildirimi veya diğer işleyiciler + tarafından ele alınmayan başka bir verileri içerebilir. - - işleyici bağımsız değişkeninde işlev olarak boş bir - dizge veya &false; belirtilirse ilgili işleyici iptal edilir. - - ¬e.func-callback; diff --git a/reference/xml/functions/xml-set-element-handler.xml b/reference/xml/functions/xml-set-element-handler.xml index b218181e4..b03f54e44 100644 --- a/reference/xml/functions/xml-set-element-handler.xml +++ b/reference/xml/functions/xml-set-element-handler.xml @@ -1,5 +1,5 @@ - + xml_set_element_handler @@ -10,17 +10,17 @@ &reftitle.description; truexml_set_element_handler - XMLParserçözümleyici + XMLParserayrıştırıcı callableaçılış_işleyici callablekapanış_işleyici - çözümleyici ile belirtilen XML çözümleyici için + ayrıştırıcı ile belirtilen XML ayrıştırıcı için açılış ve kapanış etiketi işleyicileri belirler. - açılış_işleyici ve - kapanış_işleyici işlevleri - çözümleyici ile belirtilen XML çözümleyici için - xml_parse çağrılmadan önce tanımlanmış olmalıdır. + + + açılış_işleyici XML elemanı açılırken, + kapanış_işleyici ise kapanırken çağrılır. @@ -28,43 +28,26 @@ &reftitle.parameters; - - çözümleyici - - - Açılış ve kapanış etiketi işleyicileri ayarlamak için XML çözümleyiciye - başvuru. - - - + &xml.parser.param; açılış_işleyici + &xml.handler.description; - İsmi açılış_işleyici ile belirtilen - işlevin üç bağımsız değişken kabul etmesi gerekir: + İşleyici işlevin şuna benzemesi gerekir: açılış_işleyici - XMLParserçözümleyici + XMLParserayrıştırıcı stringisim arrayöznitelikler - - çözümleyici - - - İlk bağımsız değişken, eylemci işlevi çağıran XML çözümleyicinin - tanıtıcısıdır. - - - + &xml.handler.parser.param; isim - İkinci bağımsız değişken olan isim, bu eylemcinin - çağrılacağı elemanın ismidir. Eğer çözümleyicide büyük harfe dönüşüm etkinse eleman isminin harfleri büyük harfe dönüştürülür. @@ -74,64 +57,47 @@ öznitelikler - Üçüncü bağımsız değişken olan öznitelikler, (varsa) - eleman özniteliklerini içeren ilişkisel bir dizidir. Dizi - elemanlarının anahtarları özniteliklerin isimleri, değerleri ise - özniteliklerin değerleridir. Eğer çözümleyicide büyük harfe dönüşüm etkinse - eleman isimlerine uygulanan işlem öznitelik isimlerine de - uygulanır. Değerlere ise bu işlem uygulanmaz. + Eleman özniteliklerini içeren ilişkisel bir dizidir. Elemanın + öznitelikleri yoksa dizi boştur. Dizi elemanlarının anahtarları + özniteliklerin isimleri, değerleri ise özniteliklerin değerleridir. + Eğer ayrıştırıcıda büyük harfe + dönüşüm etkinse eleman isimlerine uygulanan işlem öznitelik + isimlerine de uygulanır. Değerlere ise bu işlem uygulanmaz. - Öznitelikler, dizi elemanlarına each - uygulanarak özgün sıralarıyla ele alınabilir. Dizideki ilk eleman - elemanın ilk özniteliğini içerir ve böyle devam eder. + öznitelikler, özniteliklerin belirtildiği + sırada olmalıdır. - ¬e.func-callback; kapanış_işleyici - İsmi kapanış_işleyici ile belirtilen - işlevin iki bağımsız değişken kabul etmesi gerekir: + İşlevin şuna benzemesi gerekir: - kapanış_işleyici - XMLParserçözümleyici + voidkapanış_işleyici + XMLParserayrıştırıcı stringisim - - çözümleyici - - - İlk bağımsız değişken, işleyici işlevi çağıran XML çözümleyicinin - tanıtıcısıdır. - - - + &xml.handler.parser.param; isim - İkinci bağımsız değişken olan isim, bu işleyicinin - çağrılacağı elemanın ismidir. Eğer çözümleyicide büyük harfe dönüşüm etkinse - eleman isminin harfleri büyük harfe dönüştürülür. + İşleyicinin çağrılacağı elemanın ismidir. Eğer ayrıştırıcıda + büyük harfe dönüşüm + etkinse eleman isminin harfleri büyük harfe dönüştürülür. - - işleyici bağımsız değişkeninde işlev olarak boş bir - dizge veya &false; belirtilirse ilgili işleyici iptal edilir. - diff --git a/reference/xml/functions/xml-set-end-namespace-decl-handler.xml b/reference/xml/functions/xml-set-end-namespace-decl-handler.xml index 2f75f3191..346972983 100644 --- a/reference/xml/functions/xml-set-end-namespace-decl-handler.xml +++ b/reference/xml/functions/xml-set-end-namespace-decl-handler.xml @@ -1,5 +1,5 @@ - + xml_set_end_namespace_decl_handler @@ -11,7 +11,7 @@ &reftitle.description; truexml_set_end_namespace_decl_handler - XMLParserçözümleyici + XMLParserayrıştırıcı callableişleyici @@ -32,59 +32,30 @@ &reftitle.parameters; - - çözümleyici - - - İşleyiciyi ayarlamak için XML çözümleyiciye başvuru. - - - + &xml.parser.param; işleyici + &xml.handler.description; - xml_parse işlevi - çözümleyici için çağrıldığında mevcut olması - gereken işlevin ismini içeren dizge. - - - İsmi işleyici bağımsız değişkeniyle belirtilen işlev - iki bağımsız değişken kabul etmeli ve bir tamsayı değer döndürmelidir. Eğer - &false; döndürülürse (bir değer dönmemesi hali), XML çözümleyici - çözümlemeyi durdurur ve xml_get_error_code işlevi - XML_ERROR_EXTERNAL_ENTITY_HANDLING hatasını - döndürür. İşleyici işlev sözdizimi: + İşleyici işlev sözdizimi: işleyici - XMLParserçözümleyici - stringönek + XMLParserayrıştırıcı + stringfalseönek - - çözümleyici - - - İlk bağımsız değişken, işleyici işlevi çağıran XML çözümleyicinin - tanıtıcısıdır. - - - + &xml.handler.parser.param; önek - XML nesne içindeki isimalanına başvuru için kullanılan önek dizgesi. + Önek yoksa &false;. - - işleyici bağımsız değişkeninde işlev olarak boş bir - dizge veya &false; belirtilirse ilgili işleyici iptal edilir. - - ¬e.func-callback; diff --git a/reference/xml/functions/xml-set-external-entity-ref-handler.xml b/reference/xml/functions/xml-set-external-entity-ref-handler.xml index 230c65180..d92bb8aa5 100644 --- a/reference/xml/functions/xml-set-external-entity-ref-handler.xml +++ b/reference/xml/functions/xml-set-external-entity-ref-handler.xml @@ -1,5 +1,5 @@ - + xml_set_external_entity_ref_handler @@ -10,11 +10,11 @@ &reftitle.description; truexml_set_external_entity_ref_handler - XMLParserçözümleyici + XMLParserayrıştırıcı callableişleyici - çözümleyici ile belirtilen XML çözümleyici için + ayrıştırıcı ile belirtilen XML ayrıştırıcı için harici öğe gönderimi işleyiciyi belirler. @@ -23,54 +23,29 @@ &reftitle.parameters; - - çözümleyici - - - Harici öğe başvurusu işleyici işlevini ayarlamak için XML çözümleyiciye - başvuru. - - - + &xml.parser.param; işleyici + &xml.handler.description; - xml_parse işlevi - çözümleyici için çağrıldığında mevcut olması - gereken işlevin ismini içeren dizge. - - - İsmi işleyici bağımsız değişkeniyle belirtilen işlev - beş bağımsız değişken kabul etmeli ve bir tamsayı değer döndürmelidir. Eğer - &false; döndürülürse (bir değer dönmemesi hali), XML çözümleyici - çözümlemeyi durdurur ve xml_get_error_code işlevi - XML_ERROR_EXTERNAL_ENTITY_HANDLING hatasını - döndürür. İşleyici işlev sözdizimi: + İşleyici işlev sözdizimi: - işleyici - XMLParserçözümleyici + boolişleyici + XMLParserayrıştırıcı stringaçık_öğe_isimleri - stringtaban + stringfalsetaban stringsistem_id - stringgenel_id + stringfalsegenel_id - - çözümleyici - - - İlk bağımsız değişken, işleyici işlevi çağıran XML çözümleyici nesnesi - - - + &xml.handler.parser.param; açık_öğe_isimleri - İkinci bağımsız değişken, açık_öğe_isimleri, öğenin - çözümlenmesi için açılan öğe isimlerinin boşluk ayraçlı listesidir - (belirtilen öğenin ismi dahil). + Öğenin ayrıştırılması için açılan öğe isimlerinin boşluk ayraçlı + listesidir (belirtilen öğenin ismi dahil). @@ -79,8 +54,8 @@ Harici öğenin sistem betimleyicisini - (sistem_id) çözümlemek için kullanılacak - dizge. Şimdilik bu bağımsız değişken daima boş bir dizgedir. + (sistem_id) ayrıştırmak için kullanılacak + dizge. @@ -88,7 +63,7 @@ system_id - Harici öğenin sistem betimleyicisi. + Öğe bildiriminde belirtilen sistem betimleyicisi. @@ -96,8 +71,9 @@ public_id - Harici öğenin genel betimleyicisi. Belirtilmediği takdirde boş bir - dizgedir. Betimleyici içindeki boşluklar XML belirtiminde + Öğe bildiriminde belirtilen genel betimleyicisi. + Belirtilmediği takdirde boş dizgedir. + Betimleyici içindeki boşluklar XML belirtiminde belirtildiği gibi normalleştirilir. @@ -105,10 +81,12 @@ - işleyici bağımsız değişkeninde işlev olarak boş bir - dizge veya &false; belirtilirse ilgili işleyici iptal edilir. + İşleyici, öğe işlenmişse &true; yoksa &false; döndürmelidir. + &false; döndüğü durumda, XML ayrıştırıcı ayrıştırmayı durdurur ve + xml_get_error_code işlevinin + XML_ERROR_EXTERNAL_ENTITY_HANDLING döndürmesini + sağlar. - ¬e.func-callback; @@ -139,7 +117,7 @@ Eklenti libxml'e dayalı oluşturulmuşsa işleyici dönüş değeri artık yoksayılmıyor. Evvelce dönüş değeri yoksayılır ve - çözümleme hiç bitmezdi. + ayrıştırma hiç bitmezdi. diff --git a/reference/xml/functions/xml-set-notation-decl-handler.xml b/reference/xml/functions/xml-set-notation-decl-handler.xml index 42b9e296c..7e8df47cc 100644 --- a/reference/xml/functions/xml-set-notation-decl-handler.xml +++ b/reference/xml/functions/xml-set-notation-decl-handler.xml @@ -1,5 +1,5 @@ - + xml_set_notation_decl_handler @@ -10,11 +10,11 @@ &reftitle.description; truexml_set_notation_decl_handler - XMLParserçözümleyici + XMLParserayrıştırıcı callableeylemci - çözümleyici ile belirtilen XML çözümleyici için + ayrıştırıcı ile belirtilen XML ayrıştırıcı için gösterim bildirimi işleyiciyi belirler. @@ -33,44 +33,23 @@ &reftitle.parameters; - - çözümleyici - - - Gösterim bildirimi işleyici işlevini ayarlamak için XML çözümleyiciye - başvuru. - - - + &xml.parser.param; işleyici + &xml.handler.description; - xml_parse işlevi - çözümleyici için çağrıldığında mevcut olması - gereken işlevin ismini içeren dizge. - - - İsmi işleyici ile belirtilen işlevin beş - bağımsız değişken kabul etmesi gerekir: + İşleyici işlev sözdizimi: - işleyici - XMLParserçözümleyici + voidişleyici + XMLParserayrıştırıcı stringgösterim_adı - stringtaban + stringfalsetaban stringsistem_id - stringgenel_id + stringfalsegenel_id - - çözümleyici - - - İlk bağımsız değişken, işleyici işlevi çağıran XML çözümleyicinin - tanıtıcısıdır. - - - + &xml.handler.parser.param; gösterim_adı @@ -85,8 +64,8 @@ Harici öğenin sistem betimleyicisini - (sistem_id) çözümlemek için kullanılacak - dizge. Şimdilik bu bağımsız değişken daima boş bir dizgedir. + (sistem_id) ayrıştırmak için kullanılacak + dizge. @@ -94,7 +73,7 @@ system_id - Harici gösterim bildiriminin sistem betimleyicisi. + Öğe bildiriminde belirtilen sistem betimleyicisi. @@ -104,19 +83,15 @@ - Harici öğenin genel betimleyicisi. Belirtilmediği takdirde boş bir - dizgedir. Betimleyici içindeki boşluklar XML belirtiminde + Öğe bildiriminde belirtilen genel betimleyicisi. + Belirtilmediği takdirde boş dizgedir. + Betimleyici içindeki boşluklar XML belirtiminde belirtildiği gibi normalleştirilir. - - işleyici bağımsız değişkeninde işlev olarak boş bir - dizge veya &false; belirtilirse ilgili işleyici iptal edilir. - - ¬e.func-callback; diff --git a/reference/xml/functions/xml-set-object.xml b/reference/xml/functions/xml-set-object.xml index c13e34127..48d27eb66 100644 --- a/reference/xml/functions/xml-set-object.xml +++ b/reference/xml/functions/xml-set-object.xml @@ -1,21 +1,21 @@ - + xml_set_object - XML çözümleyici, nesne içinde kullanılır + XML ayrıştırıcı, nesne içinde kullanılır &reftitle.description; truexml_set_object - XMLParserçözümleyici + XMLParserayrıştırıcı objectnesne - Bu işlev, çözümleyici ile belirtilen XML - çözümleyicinin belirtilen nesne nesnesi içinde + Bu işlev, ayrıştırıcı ile belirtilen XML + ayrıştırıcının belirtilen nesne nesnesi içinde kullanılmasını mümkün kılar. Bu durumda, xml_set_element_handler benzeri işlevlerle belirtilen eylemci işlevlerin nesne nesnesinin yöntemleri @@ -28,10 +28,10 @@ - çözümleyici + ayrıştırıcı - nesne içinde kullanılacak XML çözümleyici nesnesi. + nesne içinde kullanılacak XML ayrıştırıcı nesnesi. @@ -39,7 +39,7 @@ nesne - XML çözümleyicinin içinde kullanılacağı nesne. + XML ayrıştırıcının içinde kullanılacağı nesne. @@ -79,49 +79,43 @@ çözümleyici = xml_parser_create(); + $this->ayrıştırıcı = xml_parser_create(); - xml_set_object($this->çözümleyici, $this); - xml_set_element_handler($this->çözümleyici, "etiketAç", "etiketKapa"); - xml_set_character_data_handler($this->çözümleyici, "cdata"); + xml_set_object($this->ayrıştırıcı, $this); + xml_set_element_handler($this->ayrıştırıcı, "etiketAç", "etiketKapa"); + xml_set_character_data_handler($this->ayrıştırıcı, "cdata"); } - function __destruct() + function ayrıştır($veri) { - xml_parser_free($this->çözümleyici); - unset($this->çözümleyici); + xml_parse($this->ayrıştırıcı, $veri); } - function çözümle($veri) - { - xml_parse($this->çözümleyici, $veri); - } - - function etiketAç($çözümleyici, $etiket, $bağımsız değişkenler) + function etiketAç(ayrıştırıcı, $etiket, $bağımsız değişkenler) { var_dump($etiket, $bağımsız değişkenler); } - function cdata($çözümleyici, $cdata) + function cdata(ayrıştırıcı, $cdata) { var_dump($cdata); } - function etiketKapa($çözümleyici, $etiket) + function etiketKapa(ayrıştırıcı, $etiket) { var_dump($etiket); } } -$xml_çözümleyici = new XMLParser(); -$xml_çözümleyici->çözümle("PHP"); +ayrıştırıcı = new CustomXMLParser(); +$xml_ayrıştırıcı->ayrıştır("PHP"); ?> ]]> diff --git a/reference/xml/functions/xml-set-processing-instruction-handler.xml b/reference/xml/functions/xml-set-processing-instruction-handler.xml index 8252350cf..db1862644 100644 --- a/reference/xml/functions/xml-set-processing-instruction-handler.xml +++ b/reference/xml/functions/xml-set-processing-instruction-handler.xml @@ -1,5 +1,5 @@ - + xml_set_processing_instruction_handler @@ -10,74 +10,59 @@ &reftitle.description; truexml_set_processing_instruction_handler - XMLParserçözümleyici + XMLParserayrıştırıcı callableişleyici - çözümleyici ile belirtilen XML çözümleyici için + ayrıştırıcı ile belirtilen XML ayrıştırıcı için işlem komutu (PI) işleyicisini belirler. Bir işlem komutunun biçemi şöyledir: - <?hedef - veri?> + +]]> - PHP kodunu böyle bir işlem komutu içine koyabilirsiniz, fakat bir sınırlama - konusunda dikkatli olmalısınız: Bir XML işlemci komutunda kapama etiketi - (?>) öncelenmemelidir (anlamsızlaştırılmamalıdır). - Dolayısıyla XML belgelere işlem komutlarıyla gömülen PHP kodları böyle - karakter dizilimleri içermemelidir. Aksi takdirde, PHP kodu ve işlem - komutunun kapama etiketi karakter verisi olarak ele alınır. + + + PHP kodu <?php işlem komutu içine konabilir. + Böylece bir XML belgesisi PHP kodu içerebilir. Ancak, + XML işlem komutunda kapama etiketi (?>) + verinin bir parçası olmamalıdır. İşlem komutunun kapama etiketi + gömülü PHP kodunun içinde yer alırsa, PHP kodu ve işlem + komutunun "asıl" kapama etiketi karakter verisi olarak ele alınır. + + &reftitle.parameters; - - çözümleyici - - - İşlem komutu işleyici işlevini ayarlamak için XML çözümleyiciye - başvuru. - - - + &xml.parser.param; işleyici + &xml.handler.description; - xml_parse işlevi - çözümleyici için çağrıldığında mevcut olması - gereken işlevin ismini içeren dizge. - - - İsmi işleyici ile belirtilen işlevin üç - bağımsız değişken kabul etmesi gerekir: + İşleyici işlev sözdizimi: - işleyici - XMLParserçözümleyici + voidişleyici + XMLParserayrıştırıcı stringhedef stringveri - - çözümleyici - - - İlk bağımsız değişken, işleyici işlevi çağıran XML çözümleyicinin - tanıtıcısıdır. - - - + &xml.handler.parser.param; hedef - İkinci bağımsız değişken, hedef, PI hedefini - içermelidir. + İşlem komutu hedefini içermelidir. @@ -85,18 +70,12 @@ veri - Üçüncü bağımsız değişken, veri, PI verisini - içermelidir. + İşlem komutu verisini içermelidir. - - işleyici bağımsız değişkeninde işlev olarak boş bir - dizge veya &false; belirtilirse ilgili işleyici iptal edilir. - - ¬e.func-callback; diff --git a/reference/xml/functions/xml-set-start-namespace-decl-handler.xml b/reference/xml/functions/xml-set-start-namespace-decl-handler.xml index 16dc52f8e..2d74fb877 100644 --- a/reference/xml/functions/xml-set-start-namespace-decl-handler.xml +++ b/reference/xml/functions/xml-set-start-namespace-decl-handler.xml @@ -1,5 +1,5 @@ - + xml_set_start_namespace_decl_handler @@ -10,7 +10,7 @@ &reftitle.description; truexml_set_start_namespace_decl_handler - XMLParserçözümleyici + XMLParserayrıştırıcı callableişleyici @@ -25,51 +25,26 @@ &reftitle.parameters; - - çözümleyici - - - İsim alanı bildirimi başlatma işleyicisi işlevini ayarlamak için XML - çözümleyiciye başvuru. - - - + &xml.parser.param; işleyici + &xml.handler.description; - xml_parse işlevi - çözümleyici için çağrıldığında mevcut olması - gereken işlevin ismini içeren dizge. - - - İsmi işleyici bağımsız değişkeniyle belirtilen işlev - üç bağımsız değişken kabul etmeli ve bir tamsayı değer döndürmelidir. Eğer - &false; döndürülürse (bir değer dönmemesi hali), XML çözümleyici - çözümlemeyi durdurur ve xml_get_error_code işlevi - XML_ERROR_EXTERNAL_ENTITY_HANDLING hatasını - döndürür. İşleyici işlev sözdizimi: + İşleyici işlev sözdizimi: - işleyici - resourceçözümleyici - stringönek + voidişleyici + resourceayrıştırıcı + stringfalseönek stringuri - - çözümleyici - - - İlk bağımsız değişken, işleyici işlevi çağıran XML çözümleyicinin - tanıtıcısıdır. - - - + &xml.handler.parser.param; önek - XML nesne içindeki isimalanına başvuru için kullanılan önek dizgesi. + Önek yoksa &false; @@ -83,11 +58,6 @@ - - işleyici bağımsız değişkeninde işlev olarak boş bir - dizge veya &false; belirtilirse ilgili işleyici iptal edilir. - - ¬e.func-callback; diff --git a/reference/xml/functions/xml-set-unparsed-entity-decl-handler.xml b/reference/xml/functions/xml-set-unparsed-entity-decl-handler.xml index d66ada707..a214cb2d1 100644 --- a/reference/xml/functions/xml-set-unparsed-entity-decl-handler.xml +++ b/reference/xml/functions/xml-set-unparsed-entity-decl-handler.xml @@ -1,9 +1,9 @@ - + xml_set_unparsed_entity_decl_handler - Çözümlenmeyen öğe bildirimi işleyicisini belirler + Ayrıştırılmayan öğe bildirimi işleyicisini belirler @@ -11,15 +11,15 @@ &reftitle.description; truexml_set_unparsed_entity_decl_handler - XMLParserçözümleyici + XMLParserayrıştırıcı callableişleyici - çözümleyici ile belirtilen XML çözümleyici için - çözümlenmeyen öğe bildirimi (NDATA) işleyicisini belirler. + ayrıştırıcı ile belirtilen XML ayrıştırıcı için + ayrıştırılmayan öğe bildirimi (NDATA) işleyicisini belirler. - XML çözümleyici, aşağıdaki gibi bir NDATA bildirimli bir harici öğe + XML ayrıştırıcı, aşağıdaki gibi bir NDATA bildirimli bir harici öğe bildirimi saptarsa ismi işleyici bağımsız değişkeninde belirtilen işlev çağrılır: @@ -47,45 +47,24 @@ &reftitle.parameters; - - çözümleyici - - - Çözümlenmeyen öğe bildirimi işleyicisi işlevini ayarlamak için XML - çözümleyiciye başvuru. - - - + &xml.parser.param; işleyici + &xml.handler.description; - xml_parse işlevi - çözümleyici için çağrıldığında mevcut olması - gereken işlevin ismini içeren dizge. - - - İsmi işleyici ile belirtilen işlevin altı - bağımsız değişken kabul etmesi gerekir: + İşleyici işlev sözdizimi: - işleyici - resourceçözümleyici + voidişleyici + resourceayrıştırıcı stringöğe_adı - stringtaban + stringfalsetaban stringsistem_id - stringgenel_id - stringgösterim_adı + stringfalsegenel_id + stringfalsegösterim_adı - - çözümleyici - - - İlk bağımsız değişken, işleyici işlevi çağıran XML çözümleyicinin - tanıtıcısıdır. - - - + &xml.handler.parser.param; öğe_adı @@ -99,7 +78,7 @@ Harici öğenin sistem betimleyicisini - (sistem_id) çözümlemek için kullanılacak + (sistem_id) ayrıştırmak için kullanılacak dizge. Şimdilik bu bağımsız değişken daima boş bir dizgedir. @@ -108,7 +87,7 @@ sistem_id - Harici öğenin sistem betimleyicisi. + Öğe bildiriminde belirtilen sistem betimleyicisi. @@ -116,8 +95,9 @@ genel_id - Harici öğenin genel betimleyicisi. Belirtilmediği takdirde boş bir - dizgedir. Betimleyici içindeki boşluklar XML belirtiminde + Öğe bildiriminde belirtilen genel betimleyicisi. + Belirtilmediği takdirde boş dizgedir. + Betimleyici içindeki boşluklar XML belirtiminde belirtildiği gibi normalleştirilir. @@ -126,7 +106,7 @@ gösterim_adı - Bu öğenin gösterim ismi + Bu öğenin gösterim ismi; (xml_set_notation_decl_handler işlevine bakınız). @@ -134,11 +114,6 @@ - - işleyici bağımsız değişkeninde işlev olarak boş bir - dizge veya &false; belirtilirse ilgili işleyici iptal edilir. - - ¬e.func-callback;