Operatörler


    × Bunları biliyor muydunuz?
"ZN Framework 2011 senesinden beri geliştirilmeye devam etmektedir."


Genel olarak bir programlama dilinde kullanılan sembolik karaketerlerdir diyebiliriz. Operatör olan her bir sembolün programlamada bir görevi vardır. Bazı karakterlerin ise dizge olarak gösterimi de vardır. Mesela &&/or gibi. Operatörler aynı zamanda genel olarak bir programlama dilinin söz dizimini de oluştururlar. Bu durumu gerçek bir insan dilinde kullanılan noktalama işaretleri gibi düşünebilirsiniz. Bir kodun sonunu gösterme (;) veya bir sayıyı artırma (++) veyahut bir sayıyı diğerinden çıkarma (-) gibi işlemler için

 

 

 

 

# Operatör Derleme Önceliği


Operatörlerde işlem önceliği durumu söz konusudur. Nasıl matematikte çarpmanın ve bölmenin, toplama ve çıkarmaya göre önceliği varsa bu durum programlama içinde geçerlidir. Aşağıda operatörlerin işlem önceliği ve işlem yönü listelenmiştir. İşlem önceliği yukarıdan aşağıya doğru sıralanmıştır.

İşlem Önceliği Yönü Türü
clonenew yönsüz Klonlama ve Nesne türetme
[ ] soldan Dizi
++, -- yönsüz Artırım ve Azaltım
(int), (float), (string) sağdan Tür değiştirme
instanceof yönsüz Nesne aitliği
! sağdan Mantıksal
*, /, %, +, - soldan Aritmetik
. soldan Dizge birleştirme
<<, >> soldan Bitsel
<, >, <=, >=, <>, ==, !=, ===, !== yönsüz Karşılaştırma
&, ^, | soldan Bitsel
&&, || soldan Mantıksal
?? sağdan Null karşılaştırma
? : soldan 3'lü karşılaştırma
=, +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=  sağdan Atama
and soldan Mantıksal
xor soldan Mantıksal
or soldan Mantıksal

 

 

# İşlem Önceliği Operatörü


Yukarıdaki bilgilendirmeye rağmen işlem önceliği konusunda belirsizliği engellemenin en iyi yolu ( ) parantezleri kullanmaktır. Matematikte olduğu gibi programlama dillerinde de parantezler işlem önceliği operatörü olarak kullanılmaktadır.

( ) İşlem önceliğini belirtir.

Mesela aşağıdaki gibi örnek bir kullanımda parantezlerin kullanılması çok uygun olacaktır.

<?php
$proc = 5 * 2 - 5 % 3; # (5 * 2) - (5 % 3)

$proc = true ? false : true ? true : NULL; # (true ? false : true) ? true : NULL
?>

 

 

# Aritmetik Operatörler


Matematiksel işlemleri gerçekleştirmek için kullanılan operatörlerdir.

$x + $y $x ile $y'nin toplamı
$x - $y $x ile $y'nin farkı
$x * $y $x ile $y'nin çarpımı
$x / $y $x ile $y'nin bölümü
$x % $y $x`in $y`ye bölümünden kalanı.
<?php

$x = 10; 
$y = 5;

echo $x * ($y - 2);
30

 

 

# Atama Operatörü


Atama operatörünün (=) amacı bir değişkene bir nesnenin değerini atar. Atama operatörü ile bilinmesi gereken önemli bir nokta bu operatör karşılaştırma değil değer aktarma işlemi gerçekleştirir. Karşılaştırma için (==) operatörü kullanılır.

$a = $b $a'ya $b'nin değerini ata.
$a += $b $a'ya $a ile $b'nin toplamını ata. Aslında yapılan $a = $a + $b işlemidir.
$a -= $b $a'ya $a ile $b'nin farkını ata. Aslında yapılan $a = $a - $b işlemidir.
$a *= $b $a'ya $a ile $b'nin çarpımı ata. Aslında yapılan $a = $a * $b işlemidir.
$a /= $b $a'ya $a'nın $b'ye bölümü ata. Aslında yapılan $a = $a / $b işlemidir.
<?php

$a  = 10;
$b  = $a;
$c  = 5;
$c *= $b;

echo $a . ' - ' . $b . '-' . $c;
10 - 1050

 

 

# Karşılaştırma Operatörleri


Karşılaştırma operatörleri isminden de anlaşılacağı üzere iki değerin karşılaştırılması için kullanılır. Özellikle karar yapıları ile kullanılan bu operatörler kod akışına yön vermekte kullanılırlar.

$a == $b $a ile $b aynı değere sahipse true döner. Aksi halde false.
$a === $b $a ile $b hem aynı değere hem de aynı türe sahipse true döner.
$a != $b $a ile $b aynı değere sahip değilse true döner.
$a !== $b $a ile $b aynı değere veya aynı türe sahip değilse true döner.
$a < $b $a, $b'den küçükse true döner.
$a > $b $a, $b'den büyükse true döner.
$a <= $b $a, $b'den küçük veya $b`ye eşitse true döner.
$a >= $b $a, $b'den büyük veya $b`ye eşitse true döner.
<?php

$a = 5;
$b = 10;

echo $a < $b
true
<?php

$a = '10';
$b = 10;

echo $a == $b;
echo $a === $b;
true
false
Dizilerde Karşılaştırmalar

Dizilerde karşılaştırmalarda değişkenlerdeki gibidir.

<?php

$a = ['a' => 1, 'b'];
$b = ['a' => '1', 'b'];

echo $a == $b;
echo $a === $b;
true
false

 

 

# Artırım ve Azaltım Operatörleri


Bir değişkenin değerini bir artırmak veya azaltmak için kullanılırlar.

$a++ $a'nın değerini döndürdükten sonra 1 artır.
$a-- $a'nın değerini döndürdükten sonra 1 azalt.
++$a $a'nın değerini 1 artırdıktan sonra döndür.
--$a $a'nın değerini 1 azalttıktan sonra döndür.
<?php

$a = 5;

echo $a++;
echo $a;
5
6
<?php

$a = 5;

echo ++$a;
echo $a;
6
6

 

 

# Mantıksal Operatörler


Mantıksal türde karşılaştırmak yapmak için kullanılırlar. En az 2 koşulun değerlendirilip bu koşuların doğruluk veya yanlışlık durumuna göre kod akışına yön vermek için kullanılırlar.

$a and $b, $a && $b Ve $a ve $b her ikisi de true döner.
$a or $b, $a || $b Veya $a veya $b doğruysa false döner.
$a xor $b Ayrıcalıklı Veya $a veya $b doğruysa true döner, her ikiside doğruysa false döner.
! $a Değil $a doğru değilse true döner.
<?php

$a = 5;
$b = 10;

echo $a === 5 && $b === 10;
echo $a < 10 || $b > 10;
echo $a === 5 xor $b === 10;
echo ($a > 10 || $b >= 10) && $a < $b;
true
true
false
true

 

 

# Dizge Operatörleri


Dizgeleri belirtmek için kullanılır. Dizgeler genellikle çıktı oluşturmak için kullanılan ve tırnaklarla ifade edilen söz dizimleridir.

$a = "herhangi bir ifade" Dizgeleri göstermek için kullanılır. 
$a = 'herhangi bir ifade' Dizgeleri göstermek için kullanılır.

Tek tırnak ile çift tırnak arasında küçük bir fark vardır. Çift tırnaklı ifadelerin içerisine yazılan değişkenler değişken gibi algılanır. Tek tırnak içine yazılan değişkenler sıradan bir ifade gibi algılanır.

<?php

$a = 10;

echo "Sayı: $a";
echo 'Sayı: $a';
Sayı: 10
Sayı: $a

Yukarıda dikkat edilirse 2. çıktıda değişken ibaresi sıradan bir karakter gibi algılanmıştır. 

 

 

# Birleştirme Operatörü


Birleştirme operatörü genellikle dizgeler için kullanılırlar. Ayrıca dizilerde de birleştirme yapılabilmektedir.

Dizgelerde . 2 veya daha fazla dizgeyi birleştirmek için kullanılır. concat() işlevi gibidir.
Dizilerde + 2 veya daha fazla diziyi birleştirmek için kullanılır. array_merge() işlevi gibidir.
<?php

$a = 'Hello';
$b' World';
$c = $a . $b;

echo $c;
Hello World
<?php

$a = ['a', 'b' => 1];
$b = ['a', 'c', 'd' => 2];
$c = $a + $b;

var_dump($c);
['a', 'b' => 1, 'c', 'd' => 2]

 

 

# Nesne Kontrol Operatörü


Nesne kontrol operatörünün amacı bir nesnenin belirtilen bir sınıfa ait olup olmadığını kontrol eder.

$object instanceof ExampleClass $object değişkeni ExampleClass sınıfının bir örneği mi?
<?php

$a = new MySQLi;

echo $a instanceof MySQLi;
true

 

 

# Tür Dönüşüm Operatörleri


Tür dönüşüm operatörler bir değişkenin türünü değiştirmek için kullanılır.

(int) $a $a değişkeninin türünü tam sayıya çevirir.
(string) $a $a değişkeninin türünü dizgeye çevirir.
(bool) $a $a değişkeninin türünü mantıksal türe çevirir.
(array) $a $a değişkeninin türünü diziye çevirir.
(object) $a $a değişkeninin türünü objeye çevirir.
<?php

$a = ['a' => 1, 'b' => 2];

echo $a['a'];

$a = (object) $a;

echo $a->a;
1
1

 

 

# Kapsam Çözümleme Operatörleri


Kapsam çözümleme operatörleri özellikle sınıf veya nesnelere ait alt nesnelere erişmek için kullanılır.

:: Static yöntem, nitelik ve sınıf sabitlerine erişmek için kullanılır.
-> Nesnelere yönelik alt nesnelere veya sınıflar yöntem ve niteliklerine erişmek için kullanılır.
=> Bu operator ilişkisel dizilerde ayraç olarak kullanılır. Ve sadece anahtar değer çifti içeren dizilere özeldir.
<?php

echo ExampleClass::$property;

$a = new XML;

echo $a->getVersion();

$a = (object) ['a' => 1];

echo $a->a; # 1

$a = ['key' => 'Value'];

echo $a['key']; # Value