| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818 |
- <appendix id="coding-standard">
- <title>Zend Framework PHP Kodlama Standardı</title>
- <sect1 id="coding-standard.overview">
- <title>Genel Açıklama</title>
- <sect2 id="coding-standard.overview.scope">
- <title>Kapsam</title>
- <para>
- Bu belge geliştiriciler ve geliştirici takımları veya Zend Framework üzerinde
- geliştirme yapanlar için yönergeler ve kaynaklar sağlamaktadır.
- Kapsanan konular :
- <itemizedlist>
- <listitem>
- <para>PHP Dosya Biçimlemesi</para>
- </listitem>
- <listitem>
- <para>İsimlendirme Kuralları</para>
- </listitem>
- <listitem>
- <para>Kodlama Stili</para>
- </listitem>
- <listitem>
- <para>Satıriçi Belgelendirme</para>
- </listitem>
- </itemizedlist>
- </para>
- </sect2>
- <sect2 id="coding-standard.overview.goals">
- <title>Amaçlar</title>
- <para>
- Her geliştirme projesinde iyi kodlama standartları önemlidir , ama bilhassa birden fazla
- geliştirici aynı proje üstünde çalıştığında önemlidir.Kodlama standartlarına sahip olmak
- kodun yüksek kaliteli , az hatalı ve kolayca bakıma alınabilir olmasını sağlamaktadır.
- </para>
- </sect2>
- </sect1>
- <sect1 id="coding-standard.php-file-formatting">
- <title>PHP Dosya Biçimlemesi</title>
- <sect2 id="coding-standard.php-file-formatting.general">
- <title>Genel</title>
- <para>
- Sadece PHP kodu içeren dosyalar için kapama etiketi ("?>") kullanılmamalı.
- PHP tarafından ihtiyaç duyulmamaktadır.Bunu eklememek takip eden whitespace karakterlerin kazayla
- çıktıya eklenmesini önlemektedir.
- </para>
- <para>
- <emphasis>ÖNEMLİ:</emphasis><code>__HALT_COMPILER()</code> ile ikili herhangi veri dahil edilebilir olmasına
- rağmen herhangi bir Zend Framework PHP dosyasıyla veya bunlardan türetilen dosyalarda dahil etme engellenmiştir.
- Bu özelliğin kullanımına sadece bazı özel kurulum betiklerinde izin verilmiştir.
- </para>
- </sect2>
- <sect2 id="coding-standard.php-file-formatting.indentation">
- <title>Girintili Yazma</title>
- <para>Satırbaşı boşluğu olarak tab olmadan 4 boşluk kullanın.</para>
- </sect2>
- <sect2 id="coding-standard.php-file-formatting.max-line-length">
- <title>Maksimum Satır Uzunluğu</title>
- <para>
- Hedef satır uzunluğu 80 karakterdir , örn. geliştiriciler mümkün olduğunca
- kodu pratik olan 80-sütün sınırına yakın tutmalılar.Gene de daha uzun satırlar
- kabul edilebilir.Herhangi bir satır PHP kodunun maksimum uzunluğu 120 karakterdir.
- </para>
- </sect2>
- <sect2 id="coding-standard.php-file-formatting.line-termination">
- <title>Satır Sonlandırma</title>
- <para>
- Satır sonlandırma unix metin dosyaları için standart bir yöntemdir.Satırlar
- mutlaka linefeed(LF) ile bitmelidir.Linefeed'ler ordinal olarak 10 veya onaltılık
- olarak 0x0A şeklinde temsil edilir.
- </para>
- <para>Carriage return(CR)'leri Macintosh bilgisayarlardaki gibi (0x0D) kullanmayın. </para>
- <para>
- Carriage return/linefeed kombinasyonunu (CRLF) Windows bilgisayarlardaki gibi (0x0D, 0x0A) kullanmayın.
- </para>
- </sect2>
- </sect1>
- <sect1 id="coding-standard.naming-conventions">
- <title>İsimlendirme Kuralları</title>
- <sect2 id="coding-standard.naming-conventions.classes">
- <title>Sınıflar</title>
- <para>
- Zend Framework sınıfların isimlerini bulundukları dizinlere eşlenmesini sağlayan bir isimlendirme kuralına sahip.
- Zend Framework'ün kök dizini altındaki tüm sınıfların hiyerarşik olarak barındırıldığı "Zend/" dizinidir.
- </para>
- <para>
- Sınıf isimleri sadece alfanümerik karakterlerden oluşabilir.
- Numaralar sınıf isimlerinde kullanılabilirler ancak bu kullanım uygun bulunmamaktadır.
- Altçizgilerin sadece konum ayıracının yerine kullanılmasına izin verilir -- "Zend/Db/Table.php" dosya
- adı mutlaka "Zend_Db_Table" sınıfına eşleme yapmalıdır.
- </para>
- <para>
- Eğer sınıf adı birden çok kelimeden oluşuyorsa , her yeni kelimenin ilk harfi büyük harfe çevrilmelidir.
- Ardışık büyütülmüş harflere izin verilmez, ör. "Zend_Pdf" sınıf ismi kabul edilirken "Zend_PDF" sınıf adı
- kabul edilmez.
- </para>
- <para>
- Zend tarafından veya katılımcı ortak firmalardan biri tarafından
- yazılan ve Zend Framework ile dağıtılan Zend Framework sınıfları "Zend_" ile başlamalı
- ve bundan dolayı hiyerarşik olarak "Zend/" dizini içinde yerini almalı.
- </para>
- <para>
- Bunlar sınıflar için kabul edilebilir isimler :
- <programlisting role="php"><![CDATA[
- Zend_Db
- Zend_View
- Zend_View_Helper]]>
- </programlisting>
- <emphasis>ÖNEMLİ:</emphasis> Framework ile çalışan fakat framework'ün bir parçası olmayan
- kod ör. framework'ün son kullanıcısı tarafından yazılan ve Zend veya framework'e ortak şirketlerin
- olmayan kod asla "Zend_" ile başlamamalıdır.
- </para>
- </sect2>
- <sect2 id="coding-standard.naming-conventions.interfaces">
- <title>Arayüzler</title>
- <para>
- Arayüz sınıfları diğer sınıflarla aynı kurallara uymalıdır (yukarıya bakın) ,
- buna rağmen aşağıdaki örneklerde olduğu gibi mutlaka "Interface" kelimesi ile bitmeli :
- <programlisting role="php"><![CDATA[
- Zend_Log_Adapter_Interface
- Zend_Controller_Dispatcher_Interface]]>
- </programlisting>
- </para>
- </sect2>
- <sect2 id="coding-standard.naming-conventions.filenames">
- <title>Dosya Adları</title>
- <para>
- Diğer tüm dosyalar için sadece alfanümerik karakterler , altçizgiler ve tire karakteri ("-")
- kullanılabilir. Boşluklar ve geri kalan karakterler kullanılamaz.
- </para>
- <para>
- PHP kodu içeren her dosya mutlaka ".php" dosya uzantısına sahip olmalıdır.
- Bu örnekler yukarıdaki bölümdeki sınıf isimlerini içererek kabul edilebilen dosya isimleri
- göstermektedir :
- <programlisting role="php"><![CDATA[
- Zend/Db.php
- Zend/Controller/Front.php
- Zend/View/Helper/FormRadio.php]]>
- </programlisting>
- Dosya isimleri yukarıda açıklandığı gibi sınıf adına göre eşleşmeyi takip etmelidir.
- </para>
- </sect2>
- <sect2 id="coding-standard.naming-conventions.functions-and-methods">
- <title>Fonksiyonlar ve Metodlar</title>
- <para>
- Fonksiyon isimleri sadece alfanümerik karakterler içerebilir. Altçizgiler fonksiyon isimlerinde
- kullanılamaz. Numaralar kullanılabilir ancak bu kullanım uygun bulunmamaktadır
- </para>
- <para>
- Fonksiyon isimleri her zaman küçük harfle başlamalı. Fonksiyon ismi birden fazla kelimeden oluştuğunda
- her kelimenin ilk harfi büyük olmalı. Buna genellikle "camelCaps" metodu denir.
- </para>
- <para>
- Fonksiyon isimleri uzun yazılmalı.Fonksiyon isimlerinin uzun olması kodun pratik olarak anlaşılabilirliğini
- artırdığından , fonksiyon isimleri mümkün olduğunca uzun olmalı.
- </para>
- <para>
- Bunlar kabul edilebilir fonksiyon isimleri:
- <programlisting role="php"><![CDATA[
- filterInput()
- getElementById()
- widgetFactory()]]>
- </programlisting>
- </para>
- <para>
- Nesneye dayalı programlamada nesne erişirleri(accessor) "get" veya "set" önekleri almalı.
- Dizayn kalıpları kullanırken mesela iskelet veya fabrika kalıbları , methodun adı kalıbın
- adını içermeliki kalıb kolayca tanımlanabilsin.
- </para>
- <para>
- Fonksiyonlar ("floating functions") genel kapsamda kullanılabilir ancak bu kullanım uygun bulunmamaktadır.
- Bu fonksiyonları static bir sınıf'ın içine koymalısınız.
- </para>
- </sect2>
- <sect2 id="coding-standard.naming-conventions.variables">
- <title>Değişkenler</title>
- <para>
- Değişken isimleri sadece alfanümerik karakterleden oluşabilir.Altçizgi kullanılamaz.
- Değişken isimlerinde numaralar kullanılabilir ancak bu kullanım uygun bulunmamaktadır.
- </para>
- <para>
- "private" veya "protected" construct'ı ile tanımlanmış sınıf üyesi değişkenlerin
- değişken isminin ilk harfi altçizgi olmalı.Bu fonksiyon adında altçizgi kullanılabilir tek kullanım
- şeklidir. "public" ile tanımlanmış üye değişkenler asla altçizgi ile başlamamalı.
- </para>
- <para>
- Fonksiyon isimlerinde (bölüm 3.3,yukarıda) olduğu gibi değişken isimleride her zaman
- küçük harfle başlamalı ve "camelCaps" kuralına uymalı.
- </para>
- <para>
- Değişkenler pratik olabilecek kadar uzun olmalı. "$i" ve "$n" gibi kısa ve öz değişken isimleri
- küçük döngüler dışında kullanılmamalı. Eğer bir döngü 20 satırdan fazla ise , indisler için olan değişkenlerin
- daha açıklayıcı isimleri olmalı.
- </para>
- </sect2>
- <sect2 id="coding-standard.naming-conventions.constants">
- <title>Sabitler</title>
- <para>
- Sabitler hem altçizgi hemde alfanümerik karakterler içerebilir. Sabit isimlerinde sayılar kullanılabilir.
- </para>
- <para>
- Sabitlerin tüm harfleri mutlaka büyük olmalı.
- </para>
- <para>
- Okunabilirliği artırmak için sabitlerdeki kelimeler altçizgilerle ayrılmalı. Örneğin
- <code>EMBED_SUPPRESS_EMBED_EXCEPTION</code> kabul olmasına karşın <code>EMBED_SUPPRESSEMBEDEXCEPTION</code>
- kabul edilmez.
- </para>
- <para>
- Sabitler "const" construct'ı kullanılarak sınıf üyeleri olarak tanımlanmalı.
- Sabitler genel kapsamda "define" ile tanımlanabilmesine karşın bu tanımlama uygun görülmemektedir.
- </para>
- </sect2>
- </sect1>
- <sect1 id="coding-standard.coding-style">
- <title>Kodlama Stili</title>
- <sect2 id="coding-standard.coding-style.php-code-demarcation">
- <title>PHP Kodu Sınırlaması</title>
- <para>
- PHP kodu her zaman için tam,standart PHP tagleri ile ayrılmalı :
- <programlisting role="php"><![CDATA[<?php
- ?>]]></programlisting>
- </para>
- <para>
- Kısa taglere izin verilmez. Sadece PHP kodu içeren dosyalarda kapama tagi her zaman
- için gözardı edilmeli (bakınız <xref linkend="coding-standard.php-file-formatting.general" />).
- </para>
- </sect2>
- <sect2 id="coding-standard.coding-style.strings">
- <title>Stringler</title>
- <sect3 id="coding-standard.coding-style.strings.literals">
- <title>Yalın Stringler</title>
- <para>
- Bir string yalın olduğunda (değişken değişimi olmadığında) , kesme işareti veya
- "tek tırnak" her zaman stringi ayırmak için kullanılır:
- <programlisting role="php"><![CDATA[
- $a = 'Örnek String';]]>
- </programlisting>
- </para>
- </sect3>
- <sect3 id="coding-standard.coding-style.strings.literals-containing-apostrophes">
- <title>Kesme işareti içeren Yalın Stringler</title>
- <para>
- Bir yalın string kesme işareti içerdiği zaman string tırnak işareti veya çift tırnak ile ayrılmalı.
- Bu özellikle SQL ifadelerine uygun :
- <programlisting role="php"><![CDATA[
- $sql = "SELECT `id`, `name` from `people` WHERE `name`='Fred' OR `name`='Susan'";]]>
- </programlisting>
- Yukarıdaki söz dizimi tek tırnak escapelemeye göre tercih edilir.
- </para>
- </sect3>
- <sect3 id="coding-standard.coding-style.strings.variable-substitution">
- <title>Değişken Yerine koyma</title>
- <para>
- Değişken yerine koyma şu iki şekilde yapılabilir :
- <programlisting role="php"><![CDATA[
- $greeting = "Merhaba $isim, tekrar hoşgeldin!";
- $greeting = "Merhaba {$isim}, tekrar hoşgeldin!";]]>
- </programlisting>
- </para>
- <para>
- Tutarlılık için bu kullanıma izin verilmez :
- <programlisting role="php"><![CDATA[
- $greeting = "Merhaba ${isim}, tekrar hoşgeldin!";]]>
- </programlisting>
- </para>
- </sect3>
- <sect3 id="coding-standard.coding-style.strings.string-concatenation">
- <title>String Birleştirme</title>
- <para>
- Stringler "." operetörü ile birleştirilebilirler. Okunabilirliği artırmak için
- "." operatöründen önce ve sonra boşluk bırakılmalı :
- <programlisting role="php"><![CDATA[
- $company = 'Zend' . 'Technologies';]]>
- </programlisting>
- </para>
- <para>
- Stringleri "." operetörü ile birleştirirken okunabilirliği artırmak için
- ifadeyi birden çok satıra bölebiliriz.Bu gibi durumlarda her başarılı satır
- "." operatörünün "=" operatörünün altına döşendiği gibi whitespace ile takviye
- edilmeli :
- <programlisting role="php"><![CDATA[
- $sql = "SELECT `id`, `name` FROM `people` "
- . "WHERE `name` = 'Susan' "
- . "ORDER BY `name` ASC ";]]>
- </programlisting>
- </para>
- </sect3>
- </sect2>
- <sect2 id="coding-standard.coding-style.arrays">
- <title>Diziler</title>
- <sect3 id="coding-standard.coding-style.arrays.numerically-indexed">
- <title>Sayısal İndeksli Diziler</title>
- <para>Negatif sayılar indis olamaz.</para>
- <para>
- İndeksli bir dizi negatif olmayan bir sayı ile başlayabilir halbuki bu uygun değildir
- ve tüm dizilerin başlangıç indeksi 0 olmalı.
- </para>
- <para>
- İndeksli dizileri <code>array</code> construct'ı ile tanımlarken , okunabilirliği artırmak için
- her virgül ayıracından sonra boşluk bırakılmalı :
- <programlisting role="php"><![CDATA[
- $sampleArray = array(1, 2, 3, 'Zend', 'Studio');]]>
- </programlisting>
- </para>
- <para>
- "array" construct'ı ile çok satırlı indeksli diziler de tanımlanabilir.
- Bu durumda aşağıda gösterildiği gibi her başarılı satırın başlangıcı aynı hizaya gelecek şekilde
- boşluklarla takviye edilmeli :
- <programlisting role="php"><![CDATA[
- $sampleArray = array(1, 2, 3, 'Zend', 'Studio',
- $a, $b, $c,
- 56.44, $d, 500);]]>
- </programlisting>
- </para>
- </sect3>
- <sect3 id="coding-standard.coding-style.arrays.associative">
- <title>Birleşmeli Diziler</title>
- <para>
- Birleşmeli dizileri <code>array</code> construct'ı ile tanımlarken ifadeyi satırlara bölmek
- tavsiye edilir. Bu durumda her başarılı satır her anahtar ve değer aynı hizaya gelecek
- şekilde whitespace ile takviye edilmeli:
- <programlisting role="php"><![CDATA[
- $sampleArray = array('ilkAnahtar' => 'ilkDeger',
- 'ikinciAnahtar' => 'ikinciDeger');]]>
- </programlisting>
- </para>
- </sect3>
- </sect2>
- <sect2 id="coding-standard.coding-style.classes">
- <title>Sınıflar</title>
- <sect3 id="coding-standard.coding-style.classes.declaration">
- <title>Sınıf Tanımlama</title>
- <para>
- Sınıflar takip eden isimlendirme kurallarına göre isimlendirilmeli.
- </para><para>
- Büyük parantez her zaman sınıf isminin hemen antındaki satıra yazılır ("Bir gerçek büyük parantez" formu).
- </para><para>
- Her sınıfın PHPDocumentor standardına uyan bilgilendirme kısmı olmalı.
- </para><para>
- Sınıf içindeki her kod içeriden 4 boşluk ile başlamalı.
- </para><para>
- Bir PHP dosyasında bir sınıf olabilir.
- </para><para>
- Sınıf dosyası içine ek kod eklenebilir ancak bu uygun bulunmuyor. Böyle dosyalarda iki boş satır sınıf ile ek PHP kodunu birbirinden ayırmalı.
- </para><para>
- Kabul edilebilir sınıf tanımlaması örneği :
- <programlisting role="php"><![CDATA[
- /**
- * Bilgilendirme kısmı buraya
- */
- class SampleClass
- {
- // sınıfın tüm içeriği
- // içeriden 4 boşluk ile başlamalı
- }]]>
- </programlisting>
- </para>
- </sect3>
- <sect3 id="coding-standard.coding-style.classes.member-variables">
- <title>Sınıf Üyesi Değişkenler</title>
- <para>
- Üye değişkenler takip eden değişken isimlendirme kurallarına göre isimlendirilmeli.
- </para><para>
- Sınıf içinde tanımlanmış her değişken sınıfın en üstünde , herhangi bir fonksiyon tanımlamadan
- listelenmeli.
- </para><para>
- <code>var</code> construct'ına izin verilmez. Üye değişkenler görünürlüklerini her zaman
- <code>private</code>,<code>protected</code> veya <code>public</code> constructlarından biriyle
- tanımlar.Üye değişkenlere direk erişim için onları public yapabilirsiniz ama erişir değişkenler (set/get)
- kabul gördüğünden bu yöntem uygun değildir.
- </para>
- </sect3>
- </sect2>
- <sect2 id="coding-standard.coding-style.functions-and-methods">
- <title>Fonksiyonlar ve Metodlar</title>
- <sect3 id="coding-standard.coding-style.functions-and-methods.declaration">
- <title>Fonksion ve Metod Tanımlaması</title>
- <para>
- Fonksiyonlar takip eden isimlendirme kurallarına göre isimlendirilmeli.
- </para><para>
- Sınıflar içindeki fonksiyonlar görünürlüklerini her zaman <code>private</code>,<code>protected</code>
- veya <code>public</code> constructlarından biriyle tanımlanmalı.
- </para><para>
- Sınıflarda olduğu gibi , her zaman büyük parantez fonksiyon isminin altındaki
- satıra yazılır.("Bir gerçek büyük parantez" formu).
- Fonksiyon ismi ile fonksiyon argümanları için açılan
- parantez arasında boşluk bulunmaz.
- </para><para>
- Genel kapsamda fonksiyon kullanmak kesinlikle uygun bulunmuyor.
- </para><para>
- Bir sınıfta kabuledilebilir fonksiyon tanımlaması örneği :
- <programlisting role="php"><![CDATA[
- /**
- * Bilgilendirme kısmı buraya
- */
- class Foo
- {
- /**
- * Bilgilendirme kısmı buraya
- */
- public function bar()
- {
- // fonksiyonun tüm içeriği
- // içeriden 4 boşluk ile başlamalı
- }
- }]]>
- </programlisting>
- </para>
- <para>
- <emphasis>NOT:</emphasis> Referans atamasına sadece fonksiyon tanımlamasında izin veriliyor :
- <programlisting role="php"><![CDATA[
- /**
- * Bilgilendirme kısmı buraya
- */
- class Foo
- {
- /**
- * Bilgilendirme kısmı buraya
- */
- public function bar(&$baz)
- {}
- }]]>
- </programlisting>
- </para>
- <para>
- Çağrı anında referans ile aktarım yapılamaz.
- </para>
- <para>
- Return değeri parantez içine anlınmamalı. Bu okunabilirliğe engel olabilir ayrıca
- ilerde eğer metod referans ile return yapacak şekilde değişirse kodun çalışmasını
- durdurabilir.
- <programlisting role="php"><![CDATA[
- /**
- * Bilgilendirme kısmı buraya
- */
- class Foo
- {
- /**
- * YANLIŞ
- */
- public function bar()
- {
- return($this->bar);
- }
- /**
- * DOĞRU
- */
- public function bar()
- {
- return $this->bar;
- }
- }]]>
- </programlisting>
- </para>
- </sect3>
- <sect3 id="coding-standard.coding-style.functions-and-methods.usage">
- <title>Fonksiyon ve Metod Kullanımı</title>
- <para>
- Fonksiyon argümanları virgülden ayıracından sonra bir boşluk bırakılarak yazılır.
- Üç argüman alan bir fonksiyon için kabul edilebilir bir fonksiyon çağrısı örneği:
- <programlisting role="php"><![CDATA[
- threeArguments(1, 2, 3);]]>
- </programlisting>
- </para>
- <para>
- Çağrı anında referans ile aktarım yapılamaz. Fonksiyon argümanlarını referans ile aktarmak için
- fonksiyon tanımlamaları bölümüne bakın.
- </para><para>
- Argüman olarak dizileri alabilen fonksiyonlar için fonksiyon çağrısı "array"
- construct'ını içerebilir ve okunabilirliği artırmak için satırlara ayrılabilir.
- Bu gibi durumlarda dizi yazım kuralları geçerliliğini korur:
- <programlisting role="php"><![CDATA[
- threeArguments(array(1, 2, 3), 2, 3);
- threeArguments(array(1, 2, 3, 'Zend', 'Studio',
- $a, $b, $c,
- 56.44, $d, 500), 2, 3);]]>
- </programlisting>
- </para>
- </sect3>
- </sect2>
- <sect2 id="coding-standard.coding-style.control-statements">
- <title>Kontrol İfadeleri</title>
- <sect3 id="coding-standard.coding-style.control-statements.if-else-elseif">
- <title>If / Else / Elseif</title>
- <para>
- <code>if</code> ve <code>elseif</code> constructlarına dayanan kontrol ifadelerinde
- koşulun açılan parantezinden önce ve kapama parantezinden sonra bir boşluk bırakılmalı.
- </para>
- <para>
- Parantezler içindeki koşullu ifadelerdeki operatörler okunabilirliği artırmak için boşluklarla
- ayrılmalı. Daha geniş koşulların mantıksal gruplandırılmasını geliştirmesi için
- iç parantez kullanılmalı.
- </para>
- <para>
- Açılış parantezi koşullu ifade ile aynı satırda yazılır. Kapanış parantezi ise her zaman
- kendi satırına yazılır. Parantezler içindeki herhangi bir içerik dört boşluk bırakılarak yazılmalı.
- <programlisting role="php"><![CDATA[
- if ($a != 2) {
- $a = 2;
- }]]>
- </programlisting>
- </para>
- <para>
- "else" veya "else" içeren "if" ifadeleri için biçimlendirme bu örneklerdeki gib olmalı :
- <programlisting role="php"><![CDATA[
- if ($a != 2) {
- $a = 2;
- } else {
- $a = 7;
- }
- if ($a != 2) {
- $a = 2;
- } elseif ($a == 3) {
- $a = 4;
- } else {
- $a = 7;
- }]]>
- </programlisting>
- PHP kimi durumlarda buradaki ifadelerin büyük parantez kullanmadan yazılmasına izin verir.
- Kodlama standardında bir fark olmaz ve tüm "if" , "elseif" veya "else" ifadeleri
- büyük parantez kullanmak zorundadır.
- </para>
- <para>
- "elseif" construct'ı kullanılabilir ama "else if" kombinasyonunun kabul görmesinden dolayı
- kullanılması uygun görülmemektedir.
- </para>
- </sect3>
- <sect3 id="coding-standards.coding-style.control-statements.switch">
- <title>Switch</title>
- <para>
- "switch" construct'ı ile yazılan kontrol ifadelerinde koşulun açılış parantezinden önce ve
- koşulun kapanış parantezinden sonra bir boşluk bırakılmalı.
- </para>
- <para>
- "switch" ifadesi içindeki tüm içerik içerinden dört boşluk ile başlamalı.
- "case" ifadesi altındaki her içerik ek olarak içeriden dört boşluk ile başlamalı.
- </para>
- <programlisting role="php"><![CDATA[
- switch ($numPeople) {
- case 1:
- break;
- case 2:
- break;
- default:
- break;
- }]]>
- </programlisting>
- <para>
- <code>switch</code> ifadelerinde <code>default</code> construct'ı asla ihmal edilmemeli.
- </para>
- <para>
- <emphasis>NOT:</emphasis>Bazen <code>break</code> veya <code>return</code> eklemeyerek sıradaki case'e düşen <code>case</code>
- ifadesi yazmak yararlıdır.
- Bu gibi durumları hatalardan ayırt etmek için <code>break</code> veya <code>return</code> ihmal edilmiş <code>case</code>
- ifadelerine "// break intentionally omitted"("//break kasıtlı olarak koyulmadı") yorumu eklenmeli.
- </para>
- </sect3>
- </sect2>
- <sect2 id="coding-standards.inline-documentation">
- <title>Satıriçi Belgelendirme</title>
- <sect3 id="coding-standards.inline-documentation.documentation-format">
- <title>Belgelendirme Biçimi</title>
- <para>
- Tüm bilgilendirme kısımları ("docblocks") phpDocumentor biçimi ile uyumlu olmalı.
- phpDocumenter biçimini açıklamak bu belgenin kapsamı dışındadır.
- Daha fazla bilgi için lütfen ziyaret edin : <ulink url="http://phpdoc.org/">http://phpdoc.org/</ulink>
- </para>
- <para>
- Zend Framework için veya Zend Framework ile çalışan her kaynak kod dosyası her dosyanın üstünde
- "dosya seviyesinde" ve her sınıfın üstünde "sınıf seviyesinde" bilgilendirme kısmı içermelidir.
- Aşağıdakiler bilgilendirme kısmı örnekleri :
- </para>
- </sect3>
- <sect3 id="coding-standards.inline-documentation.files">
- <title>Dosyalar</title>
- <para>
- PHP kodu içeren her dosya üst kısmında en az aşağıdaki kadar phpDocumentor tagleri içerecek şekilde
- bir başlık kısmına sahip olmalı:
- <programlisting role="php"><![CDATA[
- /**
- * Dosyanın kısa açıklaması
- *
- * Dosya için uzun açıklama (eğer varsa)
- *
- * LİSANS: Lisans bilgisi
- *
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license http://www.zend.com/license/3_0.txt PHP License 3.0
- * @version $Id:$
- * @link http://dev.zend.com/package/PackageName
- * @since File available since Release 1.2.0
- */]]>
- </programlisting>
- </para>
- </sect3>
- <sect3 id="coding-standards.inline-documentation.classes">
- <title>Sınıflar</title>
- <para>
- Her sınıf en az aşağıdaki kadar phpDocumentor tagleri içerecek şekilde bilgilendirme kısmı içermeli :
- <programlisting role="php"><![CDATA[
- /**
- * Sınıfın kısa açıklaması
- *
- * Sınıfın uzun açıklaması (eğer varsa)
- *
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license http://www.zend.com/license/3_0.txt PHP License 3.0
- * @version Release: @package_version@
- * @link http://dev.zend.com/package/PackageName
- * @since Class available since Release 1.2.0
- * @deprecated Class deprecated in Release 2.0.0
- */]]>
- </programlisting>
- </para>
- </sect3>
- <sect3 id="coding-standards.inline-documentation.functions">
- <title>Fonksiyonlar</title>
- <para>
- Her fonksiyon ,nesne methodları en az aşağıdaki gibi bilgilendirme kısmı içermeli:
- <itemizedlist>
- <listitem><para>Fonksiyonun açıklaması</para></listitem>
- <listitem><para>Tüm argümanlar</para></listitem>
- <listitem><para>Tüm olası dönüş değerleri</para></listitem>
- </itemizedlist>
- </para>
- <para>
- Fonksiyonun erişim seviyesi fonksiyon tanımlanırken "public","private" veya "protected" construct'ları ile
- tanımlandığı için "@access" taginin kullanılmasına gerek yoktur.
- </para>
- <para>
- Eğer fonksiyon/metod kural dışı durum(exception) fırlatabiliyorsa , @throws kullanın:
- <programlisting role="php"><![CDATA[
- @throws exceptionclass [açıklama]]]>
- </programlisting>
- </para>
- </sect3>
- </sect2>
- </sect1>
- </appendix>
- <!--
- vim:se ts=4 sw=4 et:
- -->
|