{"id":377,"date":"2016-11-29T22:30:41","date_gmt":"2016-11-29T20:30:41","guid":{"rendered":"http:\/\/fatihsoysal.com\/blog\/?p=377"},"modified":"2018-03-01T21:06:28","modified_gmt":"2018-03-01T19:06:28","slug":"organize-bir-web-projesinde-duzenli-yapi-nasil-kurulmalidir","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/organize-bir-web-projesinde-duzenli-yapi-nasil-kurulmalidir\/","title":{"rendered":"Organize Bir Web Projesinde D\u00fczenli Yap\u0131 Nas\u0131l Kurulmal\u0131d\u0131r?"},"content":{"rendered":"<p><strong>Her t\u00fcrde organizasyon kodun verimli \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flamak i\u00e7in anahtard\u0131r ve bu \u00f6zellikle web uygulamalar\u0131 i\u00e7in ge\u00e7erlidir. Bir\u00e7ok web geli\u015ftiricisi, <a href=\"https:\/\/www.codeigniter.com\/\" target=\"_blank\">CodeIgniter<\/a>\u00a0gibi \u00f6nceden olu\u015fturulmu\u015f kodlama frameworklerini\u00a0kullanarak belirli bir yap\u0131ya sad\u0131k kal\u0131rlar ve di\u011fer alanlarda organizasyon sa\u011flayarak \u00a0uygulaman\u0131n daha h\u0131zl\u0131 kodlamas\u0131na yard\u0131mc\u0131 olurlar. Bir fremawork ile olsun veya olmas\u0131n, web uygulamalar\u0131n\u0131n organize olu\u015fturulmu\u015f yap\u0131lara ihtiyac\u0131 vard\u0131r.<\/strong><\/p>\n<p>Her geli\u015ftirici bir web uygulamas\u0131n\u0131n organizasyonunu nas\u0131l d\u00fczenleyece\u011fi konusunda kendi standartlar\u0131na sahip olabilir, ancak bu makalede en iyi uygulamalar\u0131, yayg\u0131n uygulamalar\u0131 ve baz\u0131 web uygulamalar\u0131n\u0131n belirli y\u00f6nlerinin belirli bir \u015fekilde d\u00fczenlenmesinin nedenini daha ayr\u0131nt\u0131l\u0131 olarak ele alaca\u011f\u0131z. Son olarak, bir uygulama olu\u015ftururken organizasyon yap\u0131s\u0131n\u0131n neden bu kadar faydal\u0131 olabilece\u011fini de inceleyece\u011fiz.<\/p>\n<p><strong>Dizin Yap\u0131s\u0131<\/strong><br \/>\n<img decoding=\"async\" class=\" size-full wp-image-378 alignleft\" src=\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2016\/11\/1.png\" alt=\"1\" width=\"188\" height=\"197\" \/><\/p>\n<p>Projenizi haz\u0131rlarken ve \u00e7al\u0131\u015ft\u0131rma a\u015famas\u0131nda bir numaral\u0131 kriterin birden fazla proje i\u00e7in yeniden kullanabilece\u011finiz sa\u011flam bir dizin yap\u0131s\u0131na sahip olman\u0131z oldu\u011funu s\u00f6yleyebilirim. Bir framework\u00a0kullan\u0131yorsan\u0131z, genellikle sahip oldu\u011funuz haz\u0131r bir yap\u0131 mevcut olacak, ancak bu senaryoda basit bir site veya uygulama \u00fczerinde \u00e7al\u0131\u015f\u0131yoruz.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Analiz<\/strong><\/p>\n<p>Muhtemelen <strong>public_html<\/strong> yap\u0131s\u0131n\u0131 \u00e7ok iyi biliyorsunuzdur. Bu, t\u00fcm genel dosyalar\u0131n\u0131z\u0131n eri\u015fildi\u011fi belge k\u00f6k dizinidir.\u00a0(\/public_html\/page.php\u00a0= fatihsoysal.com\/page.php anlam\u0131na gelir.)<\/p>\n<p><strong>img<\/strong> &#8211; T\u00fcm g\u00f6r\u00fcnt\u00fc dosyalar\u0131n\u0131z, i\u00e7erik resimleriniz\u00a0bu dizinde.<br \/>\n<strong>css<\/strong> &#8211; T\u00fcm css dosyalar\u0131n\u0131z.<br \/>\n<strong>js<\/strong> &#8211; B\u00fct\u00fcn javascript dosyalar\u0131n\u0131z.<br \/>\n<strong>resources\u00a0<\/strong>dizini, t\u00fcm \u00fc\u00e7\u00fcnc\u00fc parti k\u00fct\u00fcphaneleri, \u00f6zel k\u00fct\u00fcphaneleri, yap\u0131land\u0131rmalar\u0131 ve projenizde bir kaynak g\u00f6revi g\u00f6ren di\u011fer t\u00fcm kodlar\u0131 tutmal\u0131d\u0131r.<\/p>\n<p><strong>config.php<\/strong> &#8211; Ana yap\u0131land\u0131rma dosyas\u0131. Site \u00e7ap\u0131nda ayarlar\u0131 burada saklamal\u0131y\u0131z.<br \/>\n<strong>library<\/strong> &#8211; T\u00fcm \u00f6zel ve \u00fc\u00e7\u00fcnc\u00fc parti k\u00fct\u00fcphaneleri i\u00e7in merkezi konum buras\u0131 olmal\u0131.<br \/>\n<strong>templates<\/strong> &#8211; D\u00fczeni olu\u015fturan, tekrar kullan\u0131labilir bile\u015fenler.<\/p>\n<p><strong>Yap\u0131land\u0131rma Dosyas\u0131 (Config)<\/strong><br \/>\nTasar\u0131mc\u0131lar ve geli\u015ftiriciler olarak as\u0131l amac\u0131m\u0131z olabildi\u011fince k\u0131s\u0131tl\u0131 zamanda olabildi\u011finde \u00e7ok i\u015f yapmakt\u0131r. Bu hedefe ula\u015fman\u0131n bir yolu da yap\u0131land\u0131rma dosyalar\u0131ndad\u0131r. Yap\u0131land\u0131rma dosyas\u0131n\u0131n nas\u0131l olmas\u0131 gerekti\u011fine dair daha iyi bir fikir edinmek i\u00e7in l\u00fctfen a\u015fa\u011f\u0131daki \u00f6rne\u011fi g\u00f6zden ge\u00e7irin.<\/p>\n<pre class=\"lang:php decode:true\">&lt;?php\r\n \r\n\/*\r\n     Fark\u0131na var\u0131lmas\u0131 gereken en \u00f6nemli durum, yap\u0131land\u0131rma dosyas\u0131n\u0131n her\r\n\u00a0\u00a0\u00a0\u00a0 sayfan\u0131za veya en az\u0131ndan bu ayarlara eri\u015fmek istedi\u011finiz herhangi bir sayfaya kullanmak isteme durumunuz.\r\n\u00a0\u00a0\u00a0\u00a0 Bu, bu ayarlar\u0131 bir proje boyunca g\u00fcvenle kullanman\u0131z\u0131 sa\u011flar, \u00e7\u00fcnk\u00fc\r\n\u00a0\u00a0\u00a0\u00a0 veritaban\u0131 kimlik bilgileriniz veya belirli bir kayna\u011fa giden bir yol gibi bir \u015fey de\u011fi\u015firse,\r\n\u00a0\u00a0\u00a0\u00a0 Yaln\u0131zca burada g\u00fcncelle\u015ftirmeniz gerekecektir.\r\n*\/\r\n \r\n$config = array(\r\n    \"db\" =&gt; array(\r\n        \"db1\" =&gt; array(\r\n            \"dbname\" =&gt; \"database1\",\r\n            \"username\" =&gt; \"dbUser\",\r\n            \"password\" =&gt; \"pa$$\",\r\n            \"host\" =&gt; \"localhost\"\r\n        ),\r\n        \"db2\" =&gt; array(\r\n            \"dbname\" =&gt; \"database2\",\r\n            \"username\" =&gt; \"dbUser\",\r\n            \"password\" =&gt; \"pa$$\",\r\n            \"host\" =&gt; \"localhost\"\r\n        )\r\n    ),\r\n    \"urls\" =&gt; array(\r\n        \"baseUrl\" =&gt; \"http:\/\/fatihsoysal.com\"\r\n    ),\r\n    \"paths\" =&gt; array(\r\n        \"resources\" =&gt; \"\/path\/to\/resources\",\r\n        \"images\" =&gt; array(\r\n            \"content\" =&gt; $_SERVER[\"DOCUMENT_ROOT\"] . \"\/images\/content\",\r\n            \"layout\" =&gt; $_SERVER[\"DOCUMENT_ROOT\"] . \"\/images\/layout\"\r\n        )\r\n    )\r\n);\r\n \r\n\/*\r\n     Genellikle a\u015fa\u011f\u0131dakileri bir \u00f6ny\u00fckleme dosyas\u0131 veya baz\u0131 ortam t\u00fcrlerine eklemeniz gerekebilir.\r\n\u00a0\u00a0\u00a0\u00a0 Yap\u0131land\u0131rma dosyan\u0131zda oldu\u011fu gibi (php i\u00e7in baz\u0131 alternatifler xml veya ini dosyalar\u0131).\r\n*\/\r\n \r\n\/*\r\n    Yo\u011fun kullan\u0131lan yollar i\u00e7in sabitler olu\u015fturmak, i\u015fleri daha kolay hale getirir.\r\n    \u00d6rn. require_once(LIBRARY_PATH . \"Paginator.php\")\r\n*\/\r\ndefined(\"LIBRARY_PATH\")\r\n    or define(\"LIBRARY_PATH\", realpath(dirname(__FILE__) . '\/library'));\r\n     \r\ndefined(\"TEMPLATES_PATH\")\r\n    or define(\"TEMPLATES_PATH\", realpath(dirname(__FILE__) . '\/templates'));\r\n \r\n\/*\r\n    Hata raporlamas\u0131.\r\n*\/\r\nini_set(\"error_reporting\", \"true\");\r\nerror_reporting(E_ALL|E_STRCT);\r\n \r\n?&gt;\r\n<\/pre>\n<p>Bu, temel a\u00e7\u0131l\u0131r bir yap\u0131land\u0131rma dosyas\u0131d\u0131r. \u00c7ok boyutlu bir dizi, veritaban\u0131 kimlik bilgileri gibi \u00e7e\u015fitli yap\u0131land\u0131rma \u00f6\u011felerine eri\u015fmek i\u00e7in esnek bir yap\u0131 sa\u011flar.<\/p>\n<p><strong>db<\/strong> &#8211; Veritaban\u0131n\u0131za ait olan veritaban\u0131 kimlik bilgilerini saklay\u0131n.<br \/>\n<strong>paths<\/strong> &#8211; Siteniz i\u00e7in \u00e7e\u015fitli kaynaklara yayg\u0131n olarak kullan\u0131lan yollar. (log dosyalar\u0131, upload dizinleri, kaynaklar)<br \/>\n<strong>urls<\/strong> &#8211; Sitenizde uzak kaynaklara ba\u015fvururken URL&#8217;leri saklamak ger\u00e7ekten kullan\u0131\u015fl\u0131 olabilir.<br \/>\n<strong>emails\u00a0<\/strong>&#8211; Hatalar\u0131 i\u015flerken veya ileti\u015fim formlar\u0131nda kullanmak i\u00e7in hata ay\u0131klama veya y\u00f6netici e-postalar\u0131n\u0131 saklay\u0131n.<\/p>\n<p><strong>Birden Fazla Ortam \u0130\u00e7in Farkl\u0131 Yap\u0131land\u0131rma Dosyalar\u0131n\u0131 Kullanma<\/strong><br \/>\nBirden fazla ortam i\u00e7in farkl\u0131 yap\u0131land\u0131rma dosyalar\u0131 kullanarak mevcut \u00e7evreye ba\u011fl\u0131 olarak ilgili ayarlar\u0131 alabilirsiniz. Bunun anlam\u0131, e\u011fer her bir ortam i\u00e7in farkl\u0131 veritaban\u0131 kimlik bilgileri veya farkl\u0131 yollar kullan\u0131rsan\u0131z, ilgili yap\u0131land\u0131rma dosyalar\u0131n\u0131 ayarlayarak, kodunuzun canl\u0131 yay\u0131ndaki sitenizi g\u00fcncellerken g\u00fc\u00e7l\u00fck \u00e7ekmeden \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flayabilirsiniz. Bu ayr\u0131ca mevcut \u00e7evreye dayal\u0131 farkl\u0131 hata raporlama ayarlar\u0131na sahip olman\u0131z\u0131 sa\u011flar. <strong>Asla canl\u0131 yay\u0131ndaki sitenizde hatalar\u0131 g\u00f6stermeyin!<\/strong>\u00a0 Hatalar\u0131 canl\u0131 sitede g\u00f6r\u00fcnt\u00fclemek, hassas verileri kullan\u0131c\u0131lara g\u00f6sterebilir (\u00f6rne\u011fin, \u015fifreler gibi). Bu konuda ayr\u0131nt\u0131l\u0131 bilgi almak isterseniz\u00a0daha \u00f6nce yazm\u0131\u015f oldu\u011fum <a href=\"https:\/\/fatihsoysal.com\/blog\/guvenli-php-uygulamalari-olusturmak-icin-yararli-ipuclari\/\" target=\"_blank\">G\u00fcvenli PHP Uygulamalar\u0131 Olu\u015fturmak \u0130\u00e7in Yararl\u0131 \u0130pu\u00e7lar\u0131<\/a> makaleme g\u00f6z atabilirsiniz.<\/p>\n<p><strong>Tasar\u0131m<\/strong><br \/>\nYeniden kullan\u0131labilir \u015fablonlar b\u00fcy\u00fck bir tasarruf sa\u011flay\u0131c\u0131s\u0131d\u0131r. \u015eablon olu\u015fturmak i\u00e7in harika k\u00fct\u00fcphaneler (<a href=\"http:\/\/www.smarty.net\/\" target=\"_blank\"><strong>Smarty<\/strong> <\/a>gibi) vard\u0131r ve genellikle\u00a0tekerle\u011fi yeniden icat etmek yerine b\u00f6yle bir k\u00fct\u00fcphaneyi kullanmak daha ak\u0131ll\u0131ca oland\u0131r. Bu k\u00fct\u00fcphaneler geli\u015ftiricilere olduk\u00e7a \u00e7ok i\u015flevsellik sunar (para birimini bi\u00e7imlendirmek veya e-posta adreslerini gizlemek i\u00e7in yard\u0131mc\u0131 y\u00f6ntemler gibi). Ancak \u00f6rne\u011fimiz basit bir site oldu\u011fundan, k\u00fct\u00fcphaneyi kurmak i\u00e7in zaman ay\u0131rmak istemiyoruz bundan dolay\u0131 en temel temel \u015fablonlar\u0131 kullan\u0131yor olaca\u011f\u0131z.<\/p>\n<p><img fetchpriority=\"high\" decoding=\"async\" class=\" size-full wp-image-382 alignleft\" src=\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2016\/11\/2.png\" alt=\"2\" width=\"400\" height=\"480\" srcset=\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2016\/11\/2.png 400w, https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2016\/11\/2-250x300.png 250w\" sizes=\"(max-width: 400px) 100vw, 400px\" \/>Sitemizin sayfalar\u0131na ortak b\u00f6l\u00fcmler veya mod\u00fcller ekleyerek organize yap\u0131y\u0131 tasar\u0131m anlam\u0131nda kurmay\u0131 ba\u015farabiliriz.<\/p>\n<p>Peki bu bize nas\u0131l bir esnek yap\u0131 sunar?<\/p>\n<p>\u00d6rne\u011fin, header mod\u00fcl\u00fcnde\u00a0bir \u015fey de\u011fi\u015ftirmek istiyorsan\u0131z, genel gezinme ba\u011flant\u0131s\u0131n\u0131 ekleme gibi, bu g\u00fcncelleme tek dosyadan site geneline yay\u0131l\u0131r.<\/p>\n<p>Bunu \u00f6rnek bir uygulamada a\u00e7\u0131klayal\u0131m.<\/p>\n<p><strong>header.php<\/strong><\/p>\n<pre class=\"lang:default decode:true \">&lt;!DOCTYPE html PUBLIC \"-\/\/W3C\/\/DTD HTML 4.01\/\/EN\"\r\n   \"http:\/\/www.w3.org\/TR\/html4\/strict.dtd\"&gt;\r\n \r\n&lt;html lang=\"en\"&gt;\r\n&lt;head&gt;\r\n    &lt;meta http-equiv=\"Content-Type\" content=\"text\/html; charset=utf-8\"&gt;\r\n    &lt;title&gt;\u00d6rnek Site&lt;\/title&gt;\r\n&lt;\/head&gt;\r\n \r\n&lt;body&gt;\r\n&lt;div id=\"header\"&gt;\r\n    &lt;h1&gt;\u00d6rnek Site&lt;\/h1&gt;\r\n    &lt;ul class=\"nav global\"&gt;\r\n        &lt;li&gt;&lt;a href=\"#\"&gt;Anasayfa&lt;\/a&gt;&lt;\/li&gt;\r\n        &lt;li&gt;&lt;a href=\"#\"&gt;Hakk\u0131m\u0131zda&lt;\/a&gt;&lt;\/li&gt;\r\n        &lt;li&gt;&lt;a href=\"#\"&gt;Portfolio&lt;\/a&gt;&lt;\/li&gt;\r\n    &lt;\/ul&gt;\r\n \r\n&lt;\/div&gt;<\/pre>\n<p><strong>rightPanel.php<\/strong><\/p>\n<pre class=\"lang:default decode:true \">&lt;div id=\"siteControls\"&gt;\r\n    &lt;ul class=\"categories\"&gt;\r\n        &lt;li&gt;PHP&lt;\/li&gt;\r\n        &lt;li&gt;HTML&lt;\/li&gt;\r\n        &lt;li&gt;CSS&lt;\/li&gt;\r\n    &lt;\/ul&gt;\r\n    &lt;div class=\"ads\"&gt;\r\n        &lt;!-- ads code --&gt;\r\n    &lt;\/div&gt;\r\n \r\n&lt;\/div&gt;<\/pre>\n<p><strong>footer.php<\/strong><\/p>\n<pre class=\"lang:default decode:true\">&lt;div id=\"footer\"&gt;\r\n    Footer i\u00e7eri\u011fi...\r\n&lt;\/div&gt;\r\n&lt;\/body&gt;\r\n&lt;\/html&gt;<\/pre>\n<p><strong>index.php<\/strong><\/p>\n<pre class=\"lang:php decode:true\">&lt;?php    \r\n    \/\/ config dosyam\u0131z\r\n    require_once(\"\/path\/to\/resources\/config.php\");\r\n     \r\n    require_once(TEMPLATES_PATH . \"\/header.php\");\r\n?&gt;\r\n&lt;div id=\"container\"&gt;\r\n    &lt;div id=\"content\"&gt;\r\n        &lt;!-- content --&gt;\r\n    &lt;\/div&gt;\r\n    &lt;?php\r\n        require_once(TEMPLATES_PATH . \"\/rightPanel.php\");\r\n    ?&gt;\r\n&lt;\/div&gt;\r\n&lt;?php\r\n    require_once(TEMPLATES_PATH . \"\/footer.php\");\r\n?&gt;<\/pre>\n<p><strong>Daha \u0130leriye G\u00f6t\u00fcrmek<\/strong><\/p>\n<p>Bu temel \u015fablon sistemi size harika bir ba\u015flang\u0131\u00e7 yaparken sizi daha da ileri g\u00f6t\u00fcr\u00fclebilir. \u00d6rne\u011fin, t\u00fcm \u015fablon dosyalar\u0131n\u0131 i\u00e7eren bir s\u0131n\u0131f veya fonksiyonlar olu\u015fturabilir, bir i\u00e7erik dosyas\u0131n\u0131 mizanpaj i\u00e7inde olu\u015fturulacak arg\u00fcman olarak kabul edebilirsiniz. Bu \u015fekilde, \u015fablon dosyalar\u0131n\u0131 sitenizin her sayfas\u0131na eklemenize gerek yoktur. Size h\u0131zl\u0131 bir \u00f6rnek g\u00f6sterece\u011fim.<\/p>\n<p><strong>\/resources\/library\/templateFunctions.php<\/strong><\/p>\n<pre class=\"lang:php decode:true \">&lt;?php\r\n    require_once(realpath(dirname(__FILE__) . \"\/..\/config.php\"));\r\n \r\n    function renderLayoutWithContentFile($contentFile, $variables = array())\r\n    {\r\n        $contentFileFullPath = TEMPLATES_PATH . \"\/\" . $contentFile;\r\n     \r\n        \/\/ De\u011fi\u015fkenlerin aras\u0131nda ge\u00e7i\u015f yap\u0131ld\u0131\u011f\u0131ndan emin olun\r\n        if (count($variables) &gt; 0) {\r\n            foreach ($variables as $key =&gt; $value) {\r\n                if (strlen($key) &gt; 0) {\r\n                    ${$key} = $value;\r\n                }\r\n            }\r\n        }\r\n     \r\n        require_once(TEMPLATES_PATH . \"\/header.php\");\r\n     \r\n        echo \"&lt;div id=\\\"container\\\"&gt;\\n\"\r\n           . \"\\t&lt;div id=\\\"content\\\"&gt;\\n\";\r\n     \r\n        if (file_exists($contentFileFullPath)) {\r\n            require_once($contentFileFullPath);\r\n        } else {\r\n            \/*\r\n                 Dosya bulunamazsa, hata bir\u00e7ok y\u00f6nden ele al\u0131nabilir.\r\n                 Bu durumlar i\u00e7in bir hata \u015fablonu ekleyece\u011fiz.\r\n            *\/\r\n            require_once(TEMPLATES_PATH . \"\/error.php\");\r\n        }\r\n     \r\n        \/\/ close content div\r\n        echo \"\\t&lt;\/div&gt;\\n\";\r\n     \r\n        require_once(TEMPLATES_PATH . \"\/rightPanel.php\");\r\n     \r\n        \/\/ close container div\r\n        echo \"&lt;\/div&gt;\\n\";\r\n     \r\n        require_once(TEMPLATES_PATH . \"\/footer.php\");\r\n    }\r\n?&gt;<\/pre>\n<p><strong>index.php<\/strong><\/p>\n<p>\u015eablon dizininizde bir i\u00e7erik \u015fablonu g\u00f6revi g\u00f6ren home.php adl\u0131 bir dosyan\u0131z oldu\u011funu varsay\u0131yorum.<\/p>\n<pre class=\"lang:php decode:true \">&lt;?php\r\n \r\n    require_once(realpath(dirname(__FILE__) . \"\/..\/resources\/config.php\"));\r\n \r\n    require_once(LIBRARY_PATH . \"\/templateFunctions.php\");\r\n \r\n    \/*\r\n        Art\u0131k t\u00fcm php mant\u0131\u011f\u0131n\u0131z\u0131 \u015fablonun d\u0131\u015f\u0131nda kullanabilirsiniz\r\n    *\/\r\n     \r\n    $setInIndexDotPhp = \"Hey! I was set in the index.php file.\";\r\n     \r\n    \/\/ \u015eablonda kullan\u0131lacak de\u011fi\u015fkenleri (bir dizi olarak) ge\u00e7irmeliyiz\r\n    $variables = array(\r\n        'setInIndexDotPhp' =&gt; $setInIndexDotPhp\r\n    );\r\n     \r\n    renderLayoutWithContentFile(\"home.php\", $variables);\r\n \r\n?&gt;<\/pre>\n<p><strong>home.php<br \/>\n<\/strong><\/p>\n<pre class=\"lang:php decode:true \">&lt;!-- Homepage content --&gt;\r\n&lt;h2&gt;Home Page&lt;\/h2&gt;\r\n \r\n&lt;?php\r\n \r\n    \/*\r\n         RenderLayoutWithContentPage() fonksiyonundaki variables parametresinden ge\u00e7irilen t\u00fcm de\u011fi\u015fkenler\r\n         burada mevcuttur.\r\n    *\/\r\n \r\n    echo $setInIndexDotPhp;\r\n \r\n?&gt;<\/pre>\n<p><strong>Bu Metodun Avantajlar\u0131:<\/strong><br \/>\nMant\u0131k ve g\u00f6r\u00fcn\u00fc\u015f\u00fcn daha fazla ayr\u0131lmas\u0131 (<strong>php ve html<\/strong>). \u015eablon mant\u0131\u011f\u0131n\u0131 bir i\u015fleve dahil etmek, \u015fablonun sitenizin her sayfas\u0131nda g\u00fcncellenmeden nas\u0131l g\u00f6sterildi\u011fini de\u011fi\u015ftirmenize olanak tan\u0131r.<\/p>\n<p><strong>Semboller<\/strong><br \/>\nUnix tabanl\u0131 sistemler (os x, linux) \u00fczerinde sembolik ba\u011flar olarak adland\u0131r\u0131lan ufak bir \u00f6zellik ta\u015f\u0131r. (Sembolik Ba\u011flant\u0131lar\u0131). Simge ba\u011flant\u0131lar\u0131, dosya sistemindeki ger\u00e7ek dizinlere veya dosyalara yap\u0131lan at\u0131flard\u0131r. Birden fazla proje aras\u0131nda kullan\u0131lan bir kitapl\u0131k gibi payla\u015f\u0131lan bir kayna\u011f\u0131n\u0131z oldu\u011funda bu ger\u00e7ekten harika olur. Sembolik ba\u011flarla yapabilece\u011finiz birka\u00e7 somut \u015fey:<\/p>\n<p>Kaynak dizininizin iki s\u00fcr\u00fcm\u00fc var. Canl\u0131 sunucunuzu g\u00fcncellerken en son dosyalar\u0131n\u0131z\u0131 keyfi bir dizine y\u00fckleyebilirsiniz. Sembolik ba\u011flant\u0131n\u0131z\u0131, kod taban\u0131m\u0131z\u0131 an\u0131nda g\u00fcncelleyen bu yeni dizine y\u00f6nlendirin. Bir \u015feyler ters giderse, an\u0131nda \u00f6nceki (\u00e7al\u0131\u015fan) dizine geri d\u00f6nebilirsiniz.<\/p>\n<p>Payla\u015f\u0131lan kaynaklar, sembolik ba\u011flarla kolayca y\u00f6netilir. \u00dczerinde \u00fczerinde \u00e7al\u0131\u015fmakta oldu\u011funuz \u00f6zel bir k\u00fct\u00fcphaneniz oldu\u011funu ve bir projede yapt\u0131\u011f\u0131n\u0131z kitapl\u0131ktaki g\u00fcncellemelerin ba\u015fka bir k\u00fct\u00fcphanede derhal bulunabilece\u011fini d\u00fc\u015f\u00fcn\u00fcn.<\/p>\n<p><strong>Sembolik Ba\u011flar\u0131 Kullanma<\/strong><br \/>\n<strong>Symlink&#8217;ler vs Hardlink&#8217;ler<\/strong><\/p>\n<p>Symlink&#8217;ler veya softlinkler, dosya sistemindeki tam yollara referanslar gibi davran\u0131rlar. Birden fazla lokasyonda sembolik ba\u011flar\u0131 kullanabilirsiniz ve dosya sistemi, ba\u015fvuru yapt\u0131klar\u0131 ger\u00e7ek dosya veya dizinmi\u015f gibi davran\u0131r. Di\u011fer yandan Hardlinkler disk \u00fczerindeki bir dosyaya i\u015faret\u00e7ilerdir (pencerelerdeki k\u0131sayollar\u0131 d\u00fc\u015f\u00fcn\u00fcn); Sizi dosyan\u0131n ger\u00e7ek konumuna g\u00f6t\u00fcr\u00fcrler.<\/p>\n<p>Sembolik ba\u011flar\u0131 kullan\u0131rken g\u00f6z \u00f6n\u00fcne alman\u0131z gereken birka\u00e7 \u015fey var. Sunucu yap\u0131land\u0131rman\u0131z\u0131n sembolik ba\u011flar\u0131 izleyecek \u015fekilde ayarlanm\u0131\u015f olmas\u0131 gerekir. Apache i\u00e7in bu i\u015flem\u00a0<strong>httpd.conf<\/strong> dosyas\u0131nda yap\u0131l\u0131r. Dizin blo\u011funu bulun ve <strong>Options FollowSymLinks<\/strong>&#8216;in orada oldu\u011fundan emin olun. Ekleme i\u015flemini yap\u0131n ve Apache&#8217;yi yeniden ba\u015flat\u0131n.<\/p>\n<pre class=\"lang:default decode:true \">&lt;Directory \/&gt;\r\n    Options FollowSymLinks\r\n    AllowOverride None\r\n&lt;\/Directory&gt;<\/pre>\n<p><strong>Sonu\u00e7<\/strong><br \/>\nBu ipu\u00e7lar\u0131, yeni ba\u015flayanla, basit siteler veya uygulamalar olu\u015fturanlar i\u00e7indir. \u0130deal olarak b\u00fcy\u00fck uygulamalar veya siteler i\u00e7in MVC mimarisi ve Nesne Y\u00f6nlendirmeli programlama gibi daha geli\u015fmi\u015f bir \u015fey d\u00fc\u015f\u00fcnmek zorundas\u0131n\u0131z. Tek ba\u015f\u0131na olduk\u00e7a geni\u015f bir konu oldu\u011fu i\u00e7in kaynak denetimini kapsamamaya karar verdim, ancak bu ipu\u00e7lar\u0131 dosyalar\u0131n\u0131z\u0131 daha kolay kaynak denetimi i\u00e7in organize etmenize yard\u0131mc\u0131 olacak.T\u00fcm projeleriniz i\u00e7in <a href=\"https:\/\/git-scm.com\/\" target=\"_blank\">git<\/a>\u00a0gibi kaynak denetimi kullanmaya kesinlikle dikkat edin.<\/p>\n<p>Bir sonraki PHP Projenizi ba\u015flat\u0131rken bu ipu\u00e7lar\u0131n\u0131 g\u00f6z \u00f6n\u00fcnde bulunduraca\u011f\u0131n\u0131z\u0131 umut eder,\u00a0buraya kadar okudu\u011funuz i\u00e7in te\u015fekk\u00fcrlerimi sunar\u0131m.<\/p>\n","protected":false},"excerpt":{"rendered":"Her t\u00fcrde organizasyon kodun verimli \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flamak i\u00e7in anahtard\u0131r ve bu \u00f6zellikle web uygulamalar\u0131 i\u00e7in ge\u00e7erlidir. Bir\u00e7ok web&hellip;","protected":false},"author":1,"featured_media":390,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[10],"tags":[94,4,497,95,96],"class_list":{"0":"post-377","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-yazilim","8":"tag-bir-web-projesi-nasil-olmali","9":"tag-fatih-soysal","10":"tag-featured","11":"tag-organize-web-projesi","12":"tag-yazilim-makale","13":"cs-entry","14":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Organize Bir Web Projesinde D\u00fczenli Yap\u0131 Nas\u0131l Kurulmal\u0131d\u0131r? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/organize-bir-web-projesinde-duzenli-yapi-nasil-kurulmalidir\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Organize Bir Web Projesinde D\u00fczenli Yap\u0131 Nas\u0131l Kurulmal\u0131d\u0131r?\" \/>\n<meta property=\"og:description\" content=\"Her t\u00fcrde organizasyon kodun verimli \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flamak i\u00e7in anahtard\u0131r ve bu \u00f6zellikle web uygulamalar\u0131 i\u00e7in ge\u00e7erlidir. Bir\u00e7ok web&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/organize-bir-web-projesinde-duzenli-yapi-nasil-kurulmalidir\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2016-11-29T20:30:41+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-03-01T19:06:28+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2016\/11\/PHP-style-006.png\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"400\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/organize-bir-web-projesinde-duzenli-yapi-nasil-kurulmalidir\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/organize-bir-web-projesinde-duzenli-yapi-nasil-kurulmalidir\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Organize Bir Web Projesinde D\u00fczenli Yap\u0131 Nas\u0131l Kurulmal\u0131d\u0131r?\",\"datePublished\":\"2016-11-29T20:30:41+00:00\",\"dateModified\":\"2018-03-01T19:06:28+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/organize-bir-web-projesinde-duzenli-yapi-nasil-kurulmalidir\/\"},\"wordCount\":1447,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"image\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/organize-bir-web-projesinde-duzenli-yapi-nasil-kurulmalidir\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2016\/11\/PHP-style-006.png\",\"keywords\":[\"bir web projesi nas\u0131l olmal\u0131\",\"fatih soysal\",\"featured\",\"organize web projesi\",\"yaz\u0131l\u0131m makale\"],\"articleSection\":[\"Yaz\u0131l\u0131m\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/organize-bir-web-projesinde-duzenli-yapi-nasil-kurulmalidir\/#respond\"]}],\"copyrightYear\":\"2016\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/organize-bir-web-projesinde-duzenli-yapi-nasil-kurulmalidir\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/organize-bir-web-projesinde-duzenli-yapi-nasil-kurulmalidir\/\",\"name\":\"Organize Bir Web Projesinde D\u00fczenli Yap\u0131 Nas\u0131l Kurulmal\u0131d\u0131r? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/organize-bir-web-projesinde-duzenli-yapi-nasil-kurulmalidir\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/organize-bir-web-projesinde-duzenli-yapi-nasil-kurulmalidir\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2016\/11\/PHP-style-006.png\",\"datePublished\":\"2016-11-29T20:30:41+00:00\",\"dateModified\":\"2018-03-01T19:06:28+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/organize-bir-web-projesinde-duzenli-yapi-nasil-kurulmalidir\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/organize-bir-web-projesinde-duzenli-yapi-nasil-kurulmalidir\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/organize-bir-web-projesinde-duzenli-yapi-nasil-kurulmalidir\/#primaryimage\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2016\/11\/PHP-style-006.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2016\/11\/PHP-style-006.png\",\"width\":800,\"height\":400},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/organize-bir-web-projesinde-duzenli-yapi-nasil-kurulmalidir\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Organize Bir Web Projesinde D\u00fczenli Yap\u0131 Nas\u0131l Kurulmal\u0131d\u0131r?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Organize Bir Web Projesinde D\u00fczenli Yap\u0131 Nas\u0131l Kurulmal\u0131d\u0131r? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/organize-bir-web-projesinde-duzenli-yapi-nasil-kurulmalidir\/","og_locale":"tr_TR","og_type":"article","og_title":"Organize Bir Web Projesinde D\u00fczenli Yap\u0131 Nas\u0131l Kurulmal\u0131d\u0131r?","og_description":"Her t\u00fcrde organizasyon kodun verimli \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flamak i\u00e7in anahtard\u0131r ve bu \u00f6zellikle web uygulamalar\u0131 i\u00e7in ge\u00e7erlidir. Bir\u00e7ok web&hellip;","og_url":"https:\/\/fatihsoysal.com\/blog\/organize-bir-web-projesinde-duzenli-yapi-nasil-kurulmalidir\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2016-11-29T20:30:41+00:00","article_modified_time":"2018-03-01T19:06:28+00:00","og_image":[{"width":800,"height":400,"url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2016\/11\/PHP-style-006.png","type":"image\/png"}],"author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"11 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/organize-bir-web-projesinde-duzenli-yapi-nasil-kurulmalidir\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/organize-bir-web-projesinde-duzenli-yapi-nasil-kurulmalidir\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Organize Bir Web Projesinde D\u00fczenli Yap\u0131 Nas\u0131l Kurulmal\u0131d\u0131r?","datePublished":"2016-11-29T20:30:41+00:00","dateModified":"2018-03-01T19:06:28+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/organize-bir-web-projesinde-duzenli-yapi-nasil-kurulmalidir\/"},"wordCount":1447,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"image":{"@id":"https:\/\/fatihsoysal.com\/blog\/organize-bir-web-projesinde-duzenli-yapi-nasil-kurulmalidir\/#primaryimage"},"thumbnailUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2016\/11\/PHP-style-006.png","keywords":["bir web projesi nas\u0131l olmal\u0131","fatih soysal","featured","organize web projesi","yaz\u0131l\u0131m makale"],"articleSection":["Yaz\u0131l\u0131m"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/organize-bir-web-projesinde-duzenli-yapi-nasil-kurulmalidir\/#respond"]}],"copyrightYear":"2016","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/organize-bir-web-projesinde-duzenli-yapi-nasil-kurulmalidir\/","url":"https:\/\/fatihsoysal.com\/blog\/organize-bir-web-projesinde-duzenli-yapi-nasil-kurulmalidir\/","name":"Organize Bir Web Projesinde D\u00fczenli Yap\u0131 Nas\u0131l Kurulmal\u0131d\u0131r? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/organize-bir-web-projesinde-duzenli-yapi-nasil-kurulmalidir\/#primaryimage"},"image":{"@id":"https:\/\/fatihsoysal.com\/blog\/organize-bir-web-projesinde-duzenli-yapi-nasil-kurulmalidir\/#primaryimage"},"thumbnailUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2016\/11\/PHP-style-006.png","datePublished":"2016-11-29T20:30:41+00:00","dateModified":"2018-03-01T19:06:28+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/organize-bir-web-projesinde-duzenli-yapi-nasil-kurulmalidir\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/organize-bir-web-projesinde-duzenli-yapi-nasil-kurulmalidir\/"]}]},{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/organize-bir-web-projesinde-duzenli-yapi-nasil-kurulmalidir\/#primaryimage","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2016\/11\/PHP-style-006.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2016\/11\/PHP-style-006.png","width":800,"height":400},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/organize-bir-web-projesinde-duzenli-yapi-nasil-kurulmalidir\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Organize Bir Web Projesinde D\u00fczenli Yap\u0131 Nas\u0131l Kurulmal\u0131d\u0131r?"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/377","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=377"}],"version-history":[{"count":9,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/377\/revisions"}],"predecessor-version":[{"id":391,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/377\/revisions\/391"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media\/390"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=377"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=377"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=377"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}