summaryrefslogtreecommitdiffhomepage
path: root/tr-tr
diff options
context:
space:
mode:
Diffstat (limited to 'tr-tr')
-rw-r--r--tr-tr/c-tr.html.markdown484
-rw-r--r--tr-tr/php-tr.html.markdown682
2 files changed, 1166 insertions, 0 deletions
diff --git a/tr-tr/c-tr.html.markdown b/tr-tr/c-tr.html.markdown
new file mode 100644
index 00000000..50bca246
--- /dev/null
+++ b/tr-tr/c-tr.html.markdown
@@ -0,0 +1,484 @@
+---
+name: c
+category: language
+language: c
+filename: learnc-tr.c
+contributors:
+ - ["Adam Bard", "http://adambard.com/"]
+translators:
+ - ["Haydar KULEKCI", "http://scanf.info/"]
+lang: tr-tr
+
+---
+/*
+C halen modern yüksek performans bilgisayarların dili.
+
+C bir çok programcının kullandığı en düşük seviye dillerdendir, ama
+salt hız ile daha fazlasını karşılar. C'nin bellek yönetiminden iyi
+anlarsanız sizi isteğiniz yere götürecektir.
+
+```c
+// Tek satır yorum // karakterleri ile başlar
+
+/*
+Çoklu satırlı yorumlar bu şekilde görünür.
+*/
+
+// C Standart kütüphanelerini uygulamanıza #include<ornek.h> ile
+// dahil edebilirsiniz.
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+// Kendi başlık(header) dosyalarınız dahil etmek için "çift tırnak"
+// kullanmalısınız.
+#include "my_header.h"
+
+// Fonksiyonlarınızı bir .h dosyasında ya da c dosyanızın üst tarafta
+// tanımlayın.
+
+void function_1();
+void function_2();
+
+// Programınızın giriş noktası main isimli bir fonksiyondur ve
+// integer değer döner
+int main() {
+
+ // çıktıları yazdırmak için printf kullanılır, "print formatted"
+ // %d bir sayı tipidir, \n yeni satır karakteridir
+ printf("%d\n", 0); // => 0 karakteri yazdırılır.
+ // Tüm ifadeler noktalı virgül ile bitmelidir.
+
+ ///////////////////////////////////////
+ // Tipler
+ ///////////////////////////////////////
+
+ // Değişkenleri kullanmadan önce tanımlamalısınız. Bir değişken tanımlarken
+ // tipini belirtmelisiniz; bu tip onun byte olarak boyutunu belirler.
+
+ // int değişken tipi 4 byte boyutundadır.
+ int x_int = 0;
+
+ // short değişken tipi genellikle 2 byte boyutundadır.
+ short x_short = 0;
+
+ // char tipi 1 byte boyutunu garanti eder.
+ char x_char = 0;
+ char y_char = 'y'; // Karakterler '' işaretleri arasına yazılır.
+
+ // long tipi 4-8 byte olur; long long tipi en azından 64 bit garantiler.
+ long x_long = 0;
+ long long x_long_long = 0;
+
+ // float tipi 32-bit kayan noktalı sayı boyutundadır.
+ float x_float = 0.0;
+
+ // double değişken tipi 64-bit kayan noktalı yazı tipindedir.
+ double x_double = 0.0;
+
+ // Integral türleri işaretsiz olabilir. Bunun anlamı, onlar eksi değer
+ // olamaz demektir, ama aynı boyuttaki işaretsiz bir sayının maksimum
+ // değeri işaretli bir sayının maksimum değeriden büyük olur.
+ unsigned char ux_char;
+ unsigned short ux_short;
+ unsigned int ux_int;
+ unsigned long long ux_long_long;
+
+ // Diğer taraftan char, ki her zaman bir byte boyutundadır, bu tipler
+ // makinenize göre boyut değiştirir. sizeof(T) size bir değişkenin byte
+ // cinsinden boyutunu verir öyle ki bu tipin boyutunu taşınabilir bir
+ // şekilde ifade edilebilir
+ // Örneğin,
+ printf("%lu\n", sizeof(int)); // => 4 (bir çok makinede 4-byte words)
+
+ // If the argument of the `sizeof` operator an expression, then its argument
+ // is not evaluated (except VLAs (see below)).
+ // The value it yields in this case is a compile-time constant.
+ int a = 1;
+ size_t size = sizeof(a++); // a++ is not evaluated
+ printf("sizeof(a++) = %zu where a = %d\n", size, a);
+ // prints "sizeof(a++) = 4 where a = 1" (on a 32-bit architecture)
+
+ // Diziler somut bir boyut ile oluşturulmalıdır.
+ char my_char_array[20]; // Bu dizi 1 * 20 = 20 byte alan kaplar
+ int my_int_array[20]; // Bu dizi 4 * 20 = 80 byte alan kaplar
+ // (4-byte bir word varsayılır)
+
+ // Şu şekilde bir diziyi 0 ile oluşturabilirsiniz:
+ char my_array[20] = {0};
+
+ // Dizinin elemanlarını indexlemek diğer diller gibidir, veya
+ // diğer diller C gibi.
+ my_array[0]; // => 0
+
+ // Diziler değişebilirdir (mutable); O sadece memory!
+ my_array[1] = 2;
+ printf("%d\n", my_array[1]); // => 2
+
+ // In C99 (and as an optional feature in C11), variable-length arrays (VLAs)
+ // can be declared as well. The size of such an array need not be a compile
+ // time constant:
+ printf("Enter the array size: "); // ask the user for an array size
+ char buf[0x100];
+ fgets(buf, sizeof buf, stdin);
+
+ // strtoul parses a string to an unsigned integer
+ size_t size = strtoul(buf, NULL, 10);
+ int var_length_array[size]; // declare the VLA
+ printf("sizeof array = %zu\n", sizeof var_length_array);
+
+ // A possible outcome of this program may be:
+ // > Enter the array size: 10
+ // > sizeof array = 40
+
+ // String'ler bir NUL (0x00) byte ile sonlandırılmış karakter dizileridir,
+ // bu string içerisinde özel bir karakter olan '\0' ile gösterilir.
+ // (Biz Nul byte'i string karakterleri arasında bulundurmamıza gerek
+ // yoktur; derleyici onu bizim için dizinin sonuna ekler.)
+ char a_string[20] = "This is a string";
+ printf("%s\n", a_string); // %s bir string formatıdır.
+
+ /*
+ a_string 16 karakter uzunluğundadır.
+ 17. karakter NUL karakteridir.
+ 18., 19. ve 20. karakterler tanımsızdır.(undefined)
+ */
+
+ printf("%d\n", a_string[16]); // => 0
+ // i.e., byte #17 is 0 (as are 18, 19, and 20)
+
+ // If we have characters between single quotes, that's a character literal.
+ // It's of type `int`, and *not* `char` (for historical reasons).
+ int cha = 'a'; // fine
+ char chb = 'a'; // fine too (implicit conversion from int to char)
+
+ ///////////////////////////////////////
+ // Operatörler
+ ///////////////////////////////////////
+
+ int i1 = 1, i2 = 2; // Çoklu tanımlama için kısayol.
+ float f1 = 1.0, f2 = 2.0;
+
+ // Aritmatik basittir.
+ i1 + i2; // => 3
+ i2 - i1; // => 1
+ i2 * i1; // => 2
+ i1 / i2; // => 0 (0.5'dir ama 0 a yuvarlanmıştır.)
+
+ f1 / f2; // => 0.5, artı veya eksi epsilon
+
+ // Modüler aritmetikte vardır.
+ 11 % 3; // => 2
+
+ // Karşılaştırma operatörleri muhtemelen tanıdıktır, ama
+ // C'de boolean tipi yoktur. Bunun yerine sayı(int) kullanırız.
+ // 0 false yerine ve diğer herşey true yerine geçmektedir.
+ // (Karşılaştırma operatörleri her zaman 0 veya 1 dönmektedir.)
+ 3 == 2; // => 0 (false)
+ 3 != 2; // => 1 (true)
+ 3 > 2; // => 1
+ 3 < 2; // => 0
+ 2 <= 2; // => 1
+ 2 >= 2; // => 1
+
+ // Sayılar üzerinde mantık işlemleri
+ !3; // => 0 (Logical not)
+ !0; // => 1
+ 1 && 1; // => 1 (Logical and)
+ 0 && 1; // => 0
+ 0 || 1; // => 1 (Logical or)
+ 0 || 0; // => 0
+
+ // Bit boyutunda işlem yapmak için operatörler
+ ~0x0F; // => 0xF0 (bitwise negation)
+ 0x0F & 0xF0; // => 0x00 (bitwise AND)
+ 0x0F | 0xF0; // => 0xFF (bitwise OR)
+ 0x04 ^ 0x0F; // => 0x0B (bitwise XOR)
+ 0x01 << 1; // => 0x02 (bitwise left shift (by 1))
+ 0x02 >> 1; // => 0x01 (bitwise right shift (by 1))
+
+ // Be careful when shifting signed integers - the following are undefined:
+ // - shifting into the sign bit of a signed integer (int a = 1 << 32)
+ // - left-shifting a negative number (int a = -1 << 2)
+ // - shifting by an offset which is >= the width of the type of the LHS:
+ // int a = 1 << 32; // UB if int is 32 bits wide
+
+ ///////////////////////////////////////
+ // Kontrol Yapıları
+ ///////////////////////////////////////
+
+ if (0) {
+ printf("I am never run\n");
+ } else if (0) {
+ printf("I am also never run\n");
+ } else {
+ printf("I print\n");
+ }
+
+ // While Döngüsü
+ int ii = 0;
+ while (ii < 10) {
+ printf("%d, ", ii++); // ii++, ii değişkenini değerini kullandıktan sonra artırır.
+ } // => prints "0, 1, 2, 3, 4, 5, 6, 7, 8, 9, "
+
+ printf("\n");
+
+ int kk = 0;
+ do {
+ printf("%d, ", kk);
+ } while (++kk < 10); // ++kk, kk değişkeninin değerini kullanmadan önce artırır.
+ // => prints "0, 1, 2, 3, 4, 5, 6, 7, 8, 9, "
+
+ printf("\n");
+
+ // For Döngüsü
+ int jj;
+ for (jj=0; jj < 10; jj++) {
+ printf("%d, ", jj);
+ } // => prints "0, 1, 2, 3, 4, 5, 6, 7, 8, 9, "
+
+ printf("\n");
+
+ ///////////////////////////////////////
+ // Tip Dönüşümleri
+ ///////////////////////////////////////
+
+ // C'de her değer bir tipe sahiptir, ama siz bir değeri bir başka tipe
+ // dönüştürebilirsiniz.
+
+ int x_hex = 0x01; // Hex literatüründe değer atayabilirsiniz.
+
+ // Türler arasındaki dönüşümde kendi değerini korumak için çalışacaktır.
+ printf("%d\n", x_hex); // => Prints 1
+ printf("%d\n", (short) x_hex); // => Prints 1
+ printf("%d\n", (char) x_hex); // => Prints 1
+
+ // Tip hiçbir hata vermeden taşacaktır(overflow).
+ printf("%d\n", (unsigned char) 257); // => 1 (Max char = 255 eğer karakter 8 bit uzunluğunda ise)
+
+ // `char`, `signed char` ve `unsigned char` karakter tiplerinin maksimum uzunluğunu
+ // belirlemek için <limits.h> kütüphanesindeki CHAR_MAX, SCHAR_MAX ve UCHAR_MAX
+ // macrolarını kullanınız.
+
+ // Integral tipi kayan noktalı yazı tipine dönüştürülecektir ve tam tersi.
+ printf("%f\n", (float)100); // %f formats a float
+ printf("%lf\n", (double)100); // %lf formats a double
+ printf("%d\n", (char)100.0);
+
+ ///////////////////////////////////////
+ // İşaretçiler (Pointers)
+ ///////////////////////////////////////
+
+ // Bir işaretci bellek adresini barındıran bir değişkendir. Tanımlaması ile işaret
+ // edeceği verinin tipi de belirtilecektir. Değişkenlerininzi bellek adreslerini
+ // getirerek bellek ile ilgili karışıklığı ortadan kaldırabilirsiniz.
+
+ int x = 0;
+ printf("%p\n", &x); // & işareti bir değişkenin bellek adresini getirmek için kullanılır.
+ // (%p işaretçilerin formatıdır)
+ // => Bazı bellek adresleri yazdırılacaktır.
+
+
+ // İşaretçiler tanımlanırken * ile başlar
+ int *px, not_a_pointer; // px sayı tipinde bir işaretçidir.
+ px = &x; // X değişkeninin bellek adresi px değişkeninde tutulmaktadır.
+ printf("%p\n", px); // => x değişkeninin bellek adresi yazdırılacaktır.
+ printf("%d, %d\n", (int)sizeof(px), (int)sizeof(not_a_pointer));
+ // => 64-bit sistemde "8, 4" yazdırılacaktır.
+
+ // İşaretçinin adres olarak gösterdiği yerdeki değeri almak için
+ // değişkenin önüne * işareti ekleyiniz.
+ printf("%d\n", *px); // => 0 bastıracaktır, x in değeridir,
+ // çünkü px değişkeni x in adresini göstermektedir.
+
+ // Ayrıca siz işaretçinin gösterdiği yerin değerini
+ // değiştirebilirsiniz. Burada referansı parantez içerisinde göstereceğiz
+ // çünkü ++ işleminin önceliği * işleminden yüksektir.
+ (*px)++; // px'in işaret ettiği değeri 1 artır.
+ printf("%d\n", *px); // => 1 yazdırılır.
+ printf("%d\n", x); // => 1 yazdırılır.
+
+ int x_array[20]; // Diziler(arrays) bellekten yan yana bellek bloklarını
+ // tahsis etmek için iyi bir yöntemdir.
+ int xx;
+ for (xx=0; xx<20; xx++) {
+ x_array[xx] = 20 - xx;
+ } // x_array dizisi 20, 19, 18,... 2, 1 değerleri ile oluşturuluyor.
+
+ // Bir sayı tipinde işaretçi tanımlanıyor ve x_array'i işaret ediyor.
+ int* x_ptr = x_array;
+ // x_ptr artık dizinin ilk elemanını işaret etmektedir (the integer 20).
+ // Bu çalışacaktır çünkü diziler(arrays) aslında sadece onların ilk
+ // elemanlarını gösteren birer işaretçidir.
+ // For example, when an array is passed to a function or is assigned to a pointer,
+ // it decays into (implicitly converted to) a pointer.
+ // Exceptions: when the array is the argument of the `&` (address-od) operator:
+ int arr[10];
+ int (*ptr_to_arr)[10] = &arr; // &arr is NOT of type `int *`!
+ // It's of type "pointer to array" (of ten `int`s).
+ // or when the array is a string literal used for initializing a char array:
+ char arr[] = "foobarbazquirk";
+ // or when it's the argument of the `sizeof` or `alignof` operator:
+ int arr[10];
+ int *ptr = arr; // equivalent with int *ptr = &arr[0];
+ printf("%zu %zu\n", sizeof arr, sizeof ptr); // probably prints "40, 4" or "40, 8"
+
+ // Diziler ilk elemanlarını gösteren birer işaretçidirler.
+ printf("%d\n", *(x_ptr)); // => 20 yazılacaktır.
+ printf("%d\n", x_array[0]); // => 20 yazılacaktır.
+
+ // İşaretçiler kendi tiplerinde artırılır ve azaltılır.
+ printf("%d\n", *(x_ptr + 1)); // => 19 yazılacaktır.
+ printf("%d\n", x_array[1]); // => 19 yazılacaktır.
+
+ // Ayrıca dinamik olarak bir bellek bloğunu standart kütüphanede bulunan
+ // malloc fonksiyonu ile uygulamanız için ayırabilirsiniz. Bu fonksiyon
+ // byte türünden ayırmak istediğiniz bloğun boyutunu parametre olarak alır.
+ int* my_ptr = (int*) malloc(sizeof(int) * 20);
+ for (xx=0; xx<20; xx++) {
+ *(my_ptr + xx) = 20 - xx; // my_ptr[xx] = 20-xx 'de aynı zamanda çalışabilir
+ } // Bellekte 20, 19, 18, 17... 2, 1 (as ints) şeklinde oluşturulmuş olacaktır.
+
+ // Eğer ayrımadığınız bir bellek adresini çağırırsanız
+ // öngörülmeyen bir değer dönecektir.
+ printf("%d\n", *(my_ptr + 21)); // => kim-bilir-ne-yazacak?
+
+ // Malloc fonksiyonu ile ayrıdığınız bellek kısmı ile işiniz bittiğinde
+ // onu free fonksiyonu ile boşaltmalısınız, aksi durumda uygulamanız
+ // kapatılana kadar belleğin o kısmını kimse kullanamaz.
+ free(my_ptr);
+
+ // Metin Dizileri(String) birer karakter dizisidir(char array), ama
+ // genelde karakter işaretçisi olarak kullanılır.
+ char* my_str = "This is my very own string";
+
+ printf("%c\n", *my_str); // => 'T'
+
+ function_1();
+} // main fonksiyon sonu
+
+///////////////////////////////////////
+// Fonksiyonlar
+///////////////////////////////////////
+
+// Fonksiyon tanımlama sözdizimi:
+// <return type> <fonksiyon adi>(<args>)
+
+int add_two_ints(int x1, int x2){
+ return x1 + x2; // bir değer geri döndürmek için return kullanılır.
+}
+
+/*
+Fonksiyonlar pass-by-value'dür, ama isterseniz işaretçi referanslarını
+kullanarak fonksiyona gönderilen parametrenin değerini değiştirebilirsiniz.
+
+Example: Bir metni tersine çevirme
+*/
+
+// Bir void konksiyonu hiç bir değer dönmez
+void str_reverse(char* str_in){
+ char tmp;
+ int ii=0, len = strlen(str_in); // Strlen C'nin standart kütüphanesinin bir fonksiyonu
+ for(ii=0; ii<len/2; ii++){
+ tmp = str_in[ii];
+ str_in[ii] = str_in[len - ii - 1]; // sondan ii'inci elemanı
+ str_in[len - ii - 1] = tmp;
+ }
+}
+
+/*
+char c[] = "This is a test.";
+str_reverse(c);
+printf("%s\n", c); // => ".tset a si sihT"
+*/
+
+///////////////////////////////////////
+// Kullanıcı Tanımlı Tipler ve Yapılar
+///////////////////////////////////////
+
+// Typedef'ler bir tip takma adı oluşturur.
+typedef int my_type;
+my_type my_type_var = 0;
+
+// Struct'lar bir veri koleksiyonudur.
+struct rectangle {
+ int width;
+ int height;
+};
+
+// It's not generally true that
+// sizeof(struct rectangle) == sizeof(int) + sizeof(int)
+// due to potential padding between the structure members (this is for alignment
+// reasons). [1]
+
+void function_1(){
+
+ struct rectangle my_rec;
+
+ // "." ile yapı üyelerine ulaşılabilir.
+ my_rec.width = 10;
+ my_rec.height = 20;
+
+ // Bir yapının adresini işaretçiye atayabilirsiniz.
+ struct rectangle* my_rec_ptr = &my_rec;
+
+ // İşaretçi üzerinden bir yapıya ulaşabilirsiniz.
+ (*my_rec_ptr).width = 30;
+
+ // ya da -> işareti ile yapının elemanlarına ulaşabilirsiniz.
+ my_rec_ptr->height = 10; // (*my_rec_ptr).height = 10; ile aynıdır.
+}
+
+// Kolaylık sağlamak için bir yapıya typedef tanımlayabilirsiniz.
+typedef struct rectangle rect;
+
+int area(rect r){
+ return r.width * r.height;
+}
+
+///////////////////////////////////////
+// Fonksiyon İşaretçiler
+///////////////////////////////////////
+
+/*
+Çalışma zamanında, fonksiyonların bilinen bir bellek adresleri vardır. Fonksiyon
+işaretçileri fonksiyonları direk olarak çağırmayı sağlayan veya geri bildirim(callback)
+için parametre gönderirken kullanılan başka birer işaretçidirler. Ama, syntax tanımı
+başlangıçta biraz karışık gelebilir.
+
+Örnek: bir işaretçiden str_reverse kullanımı
+*/
+void str_reverse_through_pointer(char * str_in) {
+ // f adında bir fonksiyon işaretçisi tanımlanır.
+ void (*f)(char *); // Signature should exactly match the target function.
+ f = &str_reverse; // Assign the address for the actual function (determined at runtime)
+ (*f)(str_in); // Just calling the function through the pointer
+ // f(str_in); // That's an alternative but equally valid syntax for calling it.
+}
+
+/*
+As long as function signatures match, you can assign any function to the same pointer.
+Function pointers are usually typedef'd for simplicity and readability, as follows:
+*/
+
+typedef void (*my_fnp_type)(char *);
+
+// Gerçek bir işaretçi tanımlandığı zaman ki kullanımı:
+// ...
+// my_fnp_type f;
+
+```
+
+## Daha Fazla Okuma Listesi
+
+[K&R, aka "The C Programming Language"](https://en.wikipedia.org/wiki/The_C_Programming_Language)'in bir kopyasını bulundurmak mükemmel olabilir
+
+Diğer bir iyi kaynak ise [Learn C the hard way](http://c.learncodethehardway.org/book/)
+
+It's very important to use proper spacing, indentation and to be consistent with your coding style in general.
+Readable code is better than clever code and fast code. For a good, sane coding style to adopt, see the
+[Linux kernel coding stlye](https://www.kernel.org/doc/Documentation/CodingStyle).
+
+Diğer taraftan google sizin için bir arkadaş olabilir.
+
+[1] http://stackoverflow.com/questions/119123/why-isnt-sizeof-for-a-struct-equal-to-the-sum-of-sizeof-of-each-member \ No newline at end of file
diff --git a/tr-tr/php-tr.html.markdown b/tr-tr/php-tr.html.markdown
new file mode 100644
index 00000000..94bc31ff
--- /dev/null
+++ b/tr-tr/php-tr.html.markdown
@@ -0,0 +1,682 @@
+---
+language: php
+filename: learnphp-tr.php
+contributors:
+ - ["Malcolm Fell", "http://emarref.net/"]
+ - ["Trismegiste", "https://github.com/Trismegiste"]
+translators:
+ - ["Haydar KULEKCI", "http://scanf.info/"]
+lang: tr-tr
+---
+
+PHP 5+ versiyonu için geçerlidir.
+
+```php
+<?php // PHP kodları <?php etiketleri içerisinde bulunmalıdır.
+
+// Eğer php dosyanız sadece PHP kodu içeriyorsa, php'nin kapatma
+// etiketini kapatmayabilirsiniz.
+
+// // işareti ile tek satırlık yorum satırı başlar.
+
+# # işareti de aynı görevi görür ancak // daha genel kullanımdadır.
+
+
+
+/*
+ Çoklu satır kodu bu şekilde yazıyoruz. slash yıldız ile başlar
+ ve yıldız slash ile biter.
+*/
+
+// "echo" ya da "print" metodları çıktı almak için kullanılır.
+print('Hello '); // Ekrana Yeni satır karakteri olmadan "Hello "
+ // yazdırılır.
+
+// () parantezler "echo" ve "print" metodları için isteğe bağlıdır.
+echo "World\n"; // Ekrana yeni satır karakteri olmadan "World"
+ // yazdırılır.
+// (Bütün ifadeler noktalı virgül ile bitmelidir.)
+
+// <?php tagı dışarısındaki herşey otomatik olarak yazdırılacaktır.
+?>
+Hello World Again!
+<?php
+
+
+/************************************
+* Tipler ve Değişkenler
+*************************************/
+
+// Değişkenler $ sembolü ile başlar.
+// Geçerli bir değişken bir harf veya alt çizgi ile başlar,
+// devamında da bir sayı, harf veya alt çizgi ile devam eder.
+
+// Mantıksal değerler
+// Boolean values are harf büyüklüğüne duyarsızdır.
+$boolean = true; // veya TRUE veya True
+$boolean = false; // veya FALSE veya False
+
+// Tam Sayılar
+$int1 = 12; // => 12
+$int2 = -12; // => -12
+$int3 = 012; // => 10 (öneki 0 olan sekizlik(octal) bir sayıyı gösterir)
+$int4 = 0x0F; // => 15 (öneki 0x olanlar hex sayıları gösterir.)
+
+// Kayan Noktalı Sayılar
+$float = 1.234;
+$float = 1.2e3;
+$float = 7E-10;
+
+// Aritmetik
+$sum = 1 + 1; // 2
+$difference = 2 - 1; // 1
+$product = 2 * 2; // 4
+$quotient = 2 / 1; // 2
+
+// Aritmetik Kısayolları
+$number = 0;
+$number += 1; // $number değişkeninin değerini 1 artırır.
+echo $number++; // 1 yazdırılır. (Yazdırıldıktan sonra artırılır.)
+echo ++$number; // 3 yazdırılır. (yazdırılmadan önce artırılır.)
+$number /= $float; // Bölünür ve bölüm $number değerine eşitlenir.
+
+// Karakter dizileri(strings) tek tırnak ile kullanılmalıdır.
+$sgl_quotes = '$String'; // => '$String'
+
+// Bir değişken içermediği sürece çift tırnak kullanmaktan kaçının
+$dbl_quotes = "This is a $sgl_quotes."; // => 'This is a $String.'
+
+// Özel karakterler sadece çift tırnak ile kullanılabilir.
+$escaped = "This contains a \t tab character.";
+$unescaped = 'This just contains a slash and a t: \t';
+
+// Gerekirse bir değişkeni küme ayracı içine alın.
+$money = "I have $${number} in the bank.";
+
+// Since PHP 5.3, nowdocs can be used for uninterpolated multi-liners
+$nowdoc = <<<'END'
+Multi line
+string
+END;
+
+// Heredocs will do string interpolation
+$heredoc = <<<END
+Multi line
+$sgl_quotes
+END;
+
+// . işareti ile karakter dizileri birbirine birleştirilebilir.
+echo 'This string ' . 'is concatenated';
+
+
+/********************************
+ * Sabitler
+ */
+
+// Bir sabit define() metodu kullanılarak tanımlanır.
+// ve çalışma zamanından hiçbir zaman değişmez!
+
+// geçerli bir sabit bir harf veya altçizgi ile başlar,
+// ve bir sayı, harf ya da altçizgi ile devam eder.
+define("FOO", "something");
+
+// sabite ulaşmak için direk olarak seçilen ismi kullanabilirsiniz.
+echo 'This outputs '.FOO;
+
+
+/********************************
+ * Diziler
+ */
+
+// PHP'de bütün diziler ilişikilendirilebilirdir. (hashmaps),
+// İlişkilendirilebilir(associative) diziler, hashmap olarak bilinir.
+
+// PHP'nin bütün versiyonları için çalışır
+$associative = array('One' => 1, 'Two' => 2, 'Three' => 3);
+
+// PHP 5.4 ile yeni bir söz dizimi kullanılmaya başlandı
+$associative = ['One' => 1, 'Two' => 2, 'Three' => 3];
+
+echo $associative['One']; // 1 yazdıracaktır.
+
+// Liste kullanımında index'ler tam sayıdır.
+$array = ['One', 'Two', 'Three'];
+echo $array[0]; // => "One"
+
+
+/********************************
+ * Çıktı
+ */
+
+echo('Hello World!');
+// Hello World! çıktısı stdout'a yazdırılır.
+// Eğer bir web browser ile çalışıyorsanır Stdout bir web sayfasıdır.
+
+print('Hello World!'); // echo ile aynıdır.
+
+// Aslında echo bir dil sabitidir, parantezleri kullanmayabilirsiniz.
+echo 'Hello World!';
+print 'Hello World!'; // Bu yazdırılacaktır.
+
+$paragraph = 'paragraph';
+
+echo 100; // Echo ile doğrudan sayısal değer kullanımı
+echo $paragraph; // veya değişken
+
+// PHP 5.4.0 veya daha üstü sürümlerde kısa açılış etiketi
+// konfigürasyonları yapıldı ise, kısa açılış etiketini kullanabilirsiniz.
+?>
+<p><?= $paragraph ?></p>
+<?php
+
+$x = 1;
+$y = 2;
+$x = $y; // Şu anda $x değişkeni $y ile aynı değere sahiptir.
+$z = &$y;
+// $z, $y'nin referansını içermektedir.
+// $z'nin değerinin değişmesi $y'nin değerinide değiştireceltir veya
+// tam tersi. Ancak $x özgün değeri olarak kalacaktır.
+
+echo $x; // => 2
+echo $z; // => 2
+$y = 0;
+echo $x; // => 2
+echo $z; // => 0
+
+/********************************
+ * Mantık
+ */
+$a = 0;
+$b = '0';
+$c = '1';
+$d = '1';
+
+// Argüman doğru değilse bir hata fırlatılacaktır.
+
+// Bu karşılaştırmalar tipler aynı olmasa bile her zaman true olacaktır.
+assert($a == $b); // equality
+assert($c != $a); // inequality
+assert($c <> $a); // alternative inequality
+assert($a < $c);
+assert($c > $b);
+assert($a <= $b);
+assert($c >= $d);
+
+// Aşağıdakiler yanlızca değer ve tip aynı olduğunda true olacaktır.
+assert($c === $d);
+assert($a !== $d);
+assert(1 == '1');
+assert(1 !== '1');
+
+// Değişkenler kullanıma bağlı olarak farklı tiplere çevrilebilir.
+
+$integer = 1;
+echo $integer + $integer; // => 2
+
+$string = '1';
+echo $string + $string; // => 2 (Karakter dizisi tam sayıya çevrilmeye zorlanır)
+
+$string = 'one';
+echo $string + $string; // => 0
+// Çıktı 0 olacaktır, çünkü + operatörü karakter dizisi olan 'one' değerini
+// bir sayıya çeviremez.
+
+// Veri tipi çevirileri bir değişkeni farklı bir türde
+// düzenlemek için kullanılabilir.
+
+$boolean = (boolean) 1; // => true
+
+$zero = 0;
+$boolean = (boolean) $zero; // => false
+
+// Veri tiplerini çevirmek için bazı fonksiyonlar vardır.
+$integer = 5;
+$string = strval($integer);
+
+$var = null; // Null değeri.
+
+
+/********************************
+ * Kontrol Yapıları
+ */
+
+if (true) {
+ print 'I get printed';
+}
+
+if (false) {
+ print 'I don\'t';
+} else {
+ print 'I get printed';
+}
+
+if (false) {
+ print 'Does not get printed';
+} elseif(true) {
+ print 'Does';
+}
+
+// Üçlü operatör
+print (false ? 'Does not get printed' : 'Does');
+
+$x = 0;
+if ($x === '0') {
+ print 'Does not print';
+} elseif($x == '1') {
+ print 'Does not print';
+} else {
+ print 'Does print';
+}
+
+
+
+// Bu alternatif sözdizimi template'ler için kullanışlıdır.
+?>
+
+<?php if ($x): ?>
+This is displayed if the test is truthy.
+<?php else: ?>
+This is displayed otherwise.
+<?php endif; ?>
+
+<?php
+
+// Use switch to save some logic.
+switch ($x) {
+ case '0':
+ print 'Switch does type coercion';
+ break; // Bir breake yazmalısınız ya da 'two' ve 'three'
+ // durumunuda kapsarsınız.
+ case 'two':
+ case 'three':
+ // $variable değişkeni 'two' ya da 'three' ise
+ break;
+ default:
+ // Varsayılan olarak bir şey yap
+}
+
+// While, do...while ve for döngüleri tanıdıktır.
+$i = 0;
+while ($i < 5) {
+ echo $i++;
+}; // "01234" yazdırılacaktır
+
+echo "\n";
+
+$i = 0;
+do {
+ echo $i++;
+} while ($i < 5); // "01234" yazdırılacaktır.
+
+echo "\n";
+
+for ($x = 0; $x < 10; $x++) {
+ echo $x;
+} // "0123456789" yazdırılacaktır.
+
+echo "\n";
+
+$wheels = ['bicycle' => 2, 'car' => 4];
+
+// Foreach döngüsü diziler üzerinde çalışır
+foreach ($wheels as $wheel_count) {
+ echo $wheel_count;
+} // "24" yazdırılacaktır.
+
+echo "\n";
+
+// Key-Value değerlere ulaşabilirsiniz.
+foreach ($wheels as $vehicle => $wheel_count) {
+ echo "A $vehicle has $wheel_count wheels";
+}
+
+echo "\n";
+
+$i = 0;
+while ($i < 5) {
+ if ($i === 3) {
+ break; // while döngüsünden çıkar
+ }
+ echo $i++;
+} // Prints "012"
+
+for ($i = 0; $i < 5; $i++) {
+ if ($i === 3) {
+ continue; // Aktif döngüyü atlar
+ }
+ echo $i;
+} // "0124" yazdırılacaktır.
+
+
+
+/********************************
+ * Fonksiyonlar
+ */
+
+// Bir fonksiyon tanımlamak için "function" kullanılır:
+function my_function () {
+ return 'Hello';
+}
+
+echo my_function(); // => "Hello"
+
+// Geçerli bir fonksiyon ismi bir harf veya altçizgi ile başlar ve
+// bir sayı, harf ya da alt çizgi ile devam eder.
+
+function add ($x, $y = 1) { // $y değeri isteğe bağlıdır ve
+ // varsayılan değeri 1'dir
+ $result = $x + $y;
+ return $result;
+}
+
+echo add(4); // => 5
+echo add(4, 2); // => 6
+
+// $result fonksiyon dışında ulaşılabilir değildir.
+// print $result; // Bir uyarı verecektir.
+
+// PHP 5.3'den beri bir anonymous fonksiyon tanımlayabilirsiniz;
+$inc = function ($x) {
+ return $x + 1;
+};
+
+echo $inc(2); // => 3
+
+function foo ($x, $y, $z) {
+ echo "$x - $y - $z";
+}
+
+// Fonksiyonlar bir fonksiyon dönebilir.
+function bar ($x, $y) {
+ // Fonksiyona dışardan değişken gönderebilmek için 'use' komutunu kullanın.
+ return function ($z) use ($x, $y) {
+ foo($x, $y, $z);
+ };
+}
+
+$bar = bar('A', 'B');
+$bar('C'); // "A - B - C" yazdırılacaktır.
+
+// Fonksiyonun ismini karakter dizinden çağırabilirsiniz.
+$function_name = 'add';
+echo $function_name(1, 2); // => 3
+// Programatik olarak fonksiyonları çalıştırmak için yararlı olabilir
+// veya, call_user_func(callable $callback [, $parameter [, ... ]]); kulanın.
+
+
+/********************************
+ * Includes
+ */
+
+<?php
+// PHP'de include edilecek dosyalar PHP açma etiketi ile başlamalı. (!)
+
+include 'my-file.php';
+// my-file.php dosyasındaki kodlar artık mevcut scope'da kullanılabilir.
+// Eğer dosya include edilemezse bir uyarı (örneğin: file not found)
+// fırlatılacaktır.
+
+include_once 'my-file.php';
+// Eğer bir dosya include edildi ise tekrar include edilmeyecektir.
+// Bu çoklu class tanımlama hatalarını önler.
+
+require 'my-file.php';
+require_once 'my-file.php';
+// Dosya include edilemediğinde fatal error veren require() bu konu
+// dışında include() ile aynıdır.
+
+// my-include.php dosyasının içeriği:
+<?php
+
+return 'Anything you like.';
+// Dosya sonu
+
+// Include'lar ver require'lar aynı zamanda bir return dönebilir.
+$value = include 'my-include.php';
+
+// Dosyalar verilen dosya yoluna göre include edilir veya, hiçbirşey
+// verilmezse include_path konfigürasyonuna göre include edecektir.
+// Eğer dosya include_path'da da bulunamazsa include hata vermeden
+// önce içinde bulunulan dizini kontrol ecektir.
+/* */
+
+
+/********************************
+ * Sınıflar
+ */
+
+// Sınıflar class kelimesi ile tanımlanır
+
+class MyClass
+{
+ const MY_CONST = 'value'; // Bir sabit
+
+ static $staticVar = 'static';
+
+ // Static değişkenler ve onların görünürlüğü
+ public static $publicStaticVar = 'publicStatic';
+ private static $privateStaticVar = 'privateStatic';
+ // Sadece bu sınıf içerisinde erişilebilir
+ protected static $protectedStaticVar = 'protectedStatic';
+ // Bu sınıf ve alt sınıflarından erişilebilir
+
+ // Özellikler görünürlüğü ile birlikte tanımlanmalıdır.
+ public $property = 'public';
+ public $instanceProp;
+ protected $prot = 'protected'; // Sınıf ve alt sınıflardan erişilebilir
+ private $priv = 'private'; // Sadece bu sınıftan erişilebilir
+
+ // __construct ile bir constructor oluşturulabilir.
+ public function __construct($instanceProp) {
+ // $this ile instance değişkenine erişilir.
+ $this->instanceProp = $instanceProp;
+ }
+
+ // Sınıfın içerisinde metodlar fonksiyonlar gibi tanımlanır.
+ public function myMethod()
+ {
+ print 'MyClass';
+ }
+
+ final function youCannotOverrideMe()
+ {
+ }
+
+ public static function myStaticMethod()
+ {
+ print 'I am static';
+ }
+}
+
+echo MyClass::MY_CONST; // 'value' şeklinde çıktı verir;
+echo MyClass::$staticVar; // 'static' şeklinde çıktı verir;
+MyClass::myStaticMethod(); // 'I am static' şeklinde çıktı verir;
+
+// Sınıfların new ile kullanımı
+$my_class = new MyClass('An instance property');
+// Eğer argüman göndermeyeceksek parantezler isteğe bağlıdır.
+
+// Sınıfın üyelerine erişim ->
+echo $my_class->property; // => "public"
+echo $my_class->instanceProp; // => "An instance property"
+$my_class->myMethod(); // => "MyClass"
+
+
+// "extends" ile sınıfı extend etmek
+class MyOtherClass extends MyClass
+{
+ function printProtectedProperty()
+ {
+ echo $this->prot;
+ }
+
+ // Bir methodu ezmek
+ function myMethod()
+ {
+ parent::myMethod();
+ print ' > MyOtherClass';
+ }
+}
+
+$my_other_class = new MyOtherClass('Instance prop');
+$my_other_class->printProtectedProperty(); // "protected" şeklinde çıktı verir.
+$my_other_class->myMethod(); // "MyClass > MyOtherClass" şeklinde çıktı verir
+
+final class YouCannotExtendMe
+{
+}
+
+// getter ve setter'ları oluşturmak için "magic method"ları kullanabilirsiniz.
+class MyMapClass
+{
+ private $property;
+
+ public function __get($key)
+ {
+ return $this->$key;
+ }
+
+ public function __set($key, $value)
+ {
+ $this->$key = $value;
+ }
+}
+
+$x = new MyMapClass();
+echo $x->property; // __get() metodunu kullanacaktır.
+$x->property = 'Something'; // __set() metodunu kullanacaktır.
+
+// Sınıflar abstract olabilir(abstract kelimesini kullanarak) veya
+// interface'ler uygulanabilir (implements kelimesi kullanılarak).
+// Bir interface "interface" kelimesi kullanılarak oluşturulur.
+
+interface InterfaceOne
+{
+ public function doSomething();
+}
+
+interface InterfaceTwo
+{
+ public function doSomethingElse();
+}
+
+// interfaces can be extended
+interface InterfaceThree extends InterfaceTwo
+{
+ public function doAnotherContract();
+}
+
+abstract class MyAbstractClass implements InterfaceOne
+{
+ public $x = 'doSomething';
+}
+
+class MyConcreteClass extends MyAbstractClass implements InterfaceTwo
+{
+ public function doSomething()
+ {
+ echo $x;
+ }
+
+ public function doSomethingElse()
+ {
+ echo 'doSomethingElse';
+ }
+}
+
+
+// Sınıflar birden fazla interface kullanabilir.
+class SomeOtherClass implements InterfaceOne, InterfaceTwo
+{
+ public function doSomething()
+ {
+ echo 'doSomething';
+ }
+
+ public function doSomethingElse()
+ {
+ echo 'doSomethingElse';
+ }
+}
+
+
+
+/********************************
+ * Traits
+ */
+// Trait'ler PHP 5.4.0'dan beri kullanılabilir ve "trait" kullanılarak
+// tanımlanır.
+
+trait MyTrait
+{
+ public function myTraitMethod()
+ {
+ print 'I have MyTrait';
+ }
+}
+
+class MyTraitfulClass
+{
+ use MyTrait;
+}
+
+$cls = new MyTraitfulClass();
+$cls->myTraitMethod(); // "I have MyTrait" çıktısını verir.
+
+
+
+/********************************
+ * İsim Uzayları
+ */
+
+// Bu alan ayrılmıştır, çünkü isim uzayı tanımı bir dosyada en başta
+// yapılmalıdır. Bu örnekte böyle olmadığını varsayalım.
+
+<?php
+
+// Varsayılan olarak, sınıflar global isim uzayındadır, ve açıkça bir
+// ters slash ile çağrılabilir.
+
+$cls = new \MyClass();
+
+
+
+// Bir dosya için isim uzayı atama
+namespace My\Namespace;
+
+class MyClass
+{
+}
+
+// (diğer bir dosya)
+$cls = new My\Namespace\MyClass;
+
+//veya diğer bir isim uzayında.
+namespace My\Other\Namespace;
+
+use My\Namespace\MyClass;
+
+$cls = new MyClass();
+
+// veya isim uzayına bir takma isim koyabilirsiniz.
+
+namespace My\Other\Namespace;
+
+use My\Namespace as SomeOtherNamespace;
+
+$cls = new SomeOtherNamespace\MyClass();
+
+*/
+
+```
+
+## Daha fazla bilgi
+
+Referans ve topluluk yazıları için [official PHP documentation](http://www.php.net/manual/) adresini ziyaret edin.
+
+Gncel en yi örnekler için [PHP Usulüne Uygun](http://kulekci.net/php-the-right-way/) adresini ziyaret edin.
+
+Eğer bir paket yöneticisi olan dil kullandıysanız, [Composer](http://getcomposer.org/)'a bir göz atın.
+
+Genel standartlar için PHP Framework Interoperability Group'unun [PSR standards](https://github.com/php-fig/fig-standards) ziyaret edebilirsiniz.
+