{"id":31872,"date":"2025-10-15T02:41:37","date_gmt":"2025-10-14T23:41:37","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=31872"},"modified":"2025-10-15T02:41:37","modified_gmt":"2025-10-14T23:41:37","slug":"giris-composer-nedir-ve-neden-kullanmaliyiz","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/giris-composer-nedir-ve-neden-kullanmaliyiz\/","title":{"rendered":"Giri\u015f: Composer Nedir ve Neden Kullanmal\u0131y\u0131z?"},"content":{"rendered":"<p><body><\/p>\n<h2>Giri\u015f: Composer Nedir ve Neden Kullanmal\u0131y\u0131z?<\/h2>\n<p>PHP geli\u015ftirme d\u00fcnyas\u0131nda ba\u011f\u0131ml\u0131l\u0131k y\u00f6netimi, projelerin karma\u015f\u0131kl\u0131\u011f\u0131 artt\u0131k\u00e7a hayati bir rol oynamaktad\u0131r. Composer, PHP i\u00e7in bir ba\u011f\u0131ml\u0131l\u0131k y\u00f6neticisidir. Projenizin ihtiya\u00e7 duydu\u011fu k\u00fct\u00fcphaneleri ve paketleri belirtmenize olanak tan\u0131r ve bunlar\u0131 sizin i\u00e7in y\u00f6netir (y\u00fckler, g\u00fcnceller, siler). Modern PHP uygulamalar\u0131n\u0131n neredeyse tamam\u0131 Composer kullan\u0131r ve bu, onu PHP ekosisteminin vazge\u00e7ilmez bir par\u00e7as\u0131 haline getirir.<\/p>\n<p>Composer kullanarak:<\/p>\n<ul>\n<li>Projenizin t\u00fcm ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 tek bir yerden y\u00f6netirsiniz.<\/li>\n<li>K\u00fct\u00fcphaneleri manuel olarak indirip projenize dahil etme zahmetinden kurtulursunuz.<\/li>\n<li>Paketler aras\u0131 ba\u011f\u0131ml\u0131l\u0131k \u00e7ak\u0131\u015fmalar\u0131n\u0131 otomatik olarak \u00e7\u00f6zer.<\/li>\n<li>Otomatik y\u00fckleme (autoloading) yetene\u011fi sayesinde, <code>require<\/code> veya <code>include<\/code> ifadeleriyle u\u011fra\u015fmak yerine s\u0131n\u0131f ve fonksiyonlar\u0131 kolayca kullanabilirsiniz.<\/li>\n<li>Geli\u015ftirme ortam\u0131n\u0131z\u0131 standartla\u015ft\u0131r\u0131r ve ekip \u00e7al\u0131\u015fmas\u0131n\u0131 kolayla\u015ft\u0131r\u0131r.<\/li>\n<\/ul>\n<p>Bu rehberde, Ubuntu i\u015fletim sistemi \u00e7al\u0131\u015ft\u0131ran bir Sanal \u00d6zel Sunucunuza (VPS) Composer&#8217;\u0131 nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 ve temel kullan\u0131m\u0131n\u0131 ad\u0131m ad\u0131m \u00f6\u011freneceksiniz.<\/p>\n<h2>\u00d6n Gereksinimler ve Sistem Haz\u0131rl\u0131\u011f\u0131<\/h2>\n<p>Composer&#8217;\u0131 kurmaya ba\u015flamadan \u00f6nce, VPS&#8217;inizin baz\u0131 temel gereksinimleri kar\u015f\u0131lad\u0131\u011f\u0131ndan emin olmal\u0131y\u0131z.<\/p>\n<h3>VPS&#8217;inize SSH ile Ba\u011flanma<\/h3>\n<p>\u00d6ncelikle, terminaliniz veya PuTTY gibi bir SSH istemcisi kullanarak VPS&#8217;inize ba\u011flanman\u0131z gerekmektedir.<\/p>\n<pre><code class=\"language-bash\">ssh kullanici_adiniz@sunucu_ip_adresiniz<\/code><\/pre>\n<p>\u00d6rnek:<\/p>\n<pre><code class=\"language-bash\">ssh root@192.0.2.1<\/code><\/pre>\n<p>\u015eifrenizi girdikten sonra sunucunuzun komut sat\u0131r\u0131na eri\u015feceksiniz.<\/p>\n<h3>Sistemi G\u00fcncelleme<\/h3>\n<p>Herhangi bir yeni yaz\u0131l\u0131m kurmadan \u00f6nce, sunucunuzdaki paket listelerini g\u00fcncellemek ve mevcut paketleri y\u00fckseltmek iyi bir uygulamad\u0131r. Bu, uyumluluk sorunlar\u0131n\u0131 \u00f6nler ve en son g\u00fcvenlik yamalar\u0131na sahip olman\u0131z\u0131 sa\u011flar.<\/p>\n<pre><code class=\"language-bash\">sudo apt update\nsudo apt upgrade -y<\/code><\/pre>\n<h3>PHP ve Gerekli Uzant\u0131lar\u0131n Kurulumu<\/h3>\n<p>Composer, PHP ile \u00e7al\u0131\u015ft\u0131\u011f\u0131 i\u00e7in sunucunuzda PHP&#8217;nin kurulu olmas\u0131 gerekir. Ayr\u0131ca, Composer&#8217;\u0131n d\u00fczg\u00fcn \u00e7al\u0131\u015fmas\u0131 i\u00e7in baz\u0131 PHP uzant\u0131lar\u0131na da ihtiya\u00e7 duyulur. Bu rehberde PHP 8.x s\u00fcr\u00fcm\u00fcn\u00fc kullanaca\u011f\u0131z.<\/p>\n<pre><code class=\"language-bash\">sudo apt install php-cli php-mbstring php-xml php-zip php-curl git unzip -y<\/code><\/pre>\n<p>Bu komutlar \u015funlar\u0131 kurar:<\/p>\n<ul>\n<li><code>php-cli<\/code>: PHP komut sat\u0131r\u0131 aray\u00fcz\u00fc. Composer&#8217;\u0131n \u00e7al\u0131\u015fmas\u0131 i\u00e7in gereklidir.<\/li>\n<li><code>php-mbstring<\/code>: \u00c7ok baytl\u0131 dizeleri i\u015flemek i\u00e7in PHP uzant\u0131s\u0131.<\/li>\n<li><code>php-xml<\/code>: XML verilerini i\u015flemek i\u00e7in PHP uzant\u0131s\u0131.<\/li>\n<li><code>php-zip<\/code>: ZIP ar\u015fivlerini i\u015flemek i\u00e7in PHP uzant\u0131s\u0131.<\/li>\n<li><code>php-curl<\/code>: Web istekleri yapmak i\u00e7in PHP uzant\u0131s\u0131. Composer paketlerini indirmek i\u00e7in kullan\u0131l\u0131r.<\/li>\n<li><code>git<\/code>: Composer, baz\u0131 paketleri Git depolar\u0131ndan indirebilir.<\/li>\n<li><code>unzip<\/code>: Ar\u015fivlenmi\u015f dosyalar\u0131 a\u00e7mak i\u00e7in gereklidir.<\/li>\n<\/ul>\n<p>Kurulumun ard\u0131ndan PHP s\u00fcr\u00fcm\u00fcn\u00fc kontrol edebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">php -v<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131, kurulu PHP s\u00fcr\u00fcm\u00fcn\u00fc g\u00f6sterecektir.<\/p>\n<h2>Composer&#8217;\u0131n Kurulumu<\/h2>\n<p>\u015eimdi Composer&#8217;\u0131 indirip sisteminize kurmaya ge\u00e7ebiliriz. Composer&#8217;\u0131 genellikle global olarak kurar\u0131z, b\u00f6ylece herhangi bir dizinden <code>composer<\/code> komutunu \u00e7al\u0131\u015ft\u0131rabiliriz.<\/p>\n<h3>Composer \u0130ndirme<\/h3>\n<p>Composer&#8217;\u0131n resmi web sitesinden kurulum beti\u011fini indirece\u011fiz. G\u00fcvenlik nedeniyle, indirilen beti\u011fin b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc do\u011frulamak \u00f6nemlidir.<\/p>\n<pre><code class=\"language-bash\">curl -sS https:\/\/getcomposer.org\/installer -o composer-setup.php<\/code><\/pre>\n<p>Bu komut, <code>composer-setup.php<\/code> ad\u0131nda bir dosyay\u0131 mevcut dizininize indirir. <code>-sS<\/code> bayraklar\u0131 sessiz modda \u00e7al\u0131\u015fmay\u0131 ve hata durumunda \u00e7\u0131kt\u0131 vermeyi sa\u011flar.<\/p>\n<h3>\u0130ndirilen Dosyan\u0131n Do\u011frulanmas\u0131<\/h3>\n<p>\u0130ndirilen kurulum beti\u011finin de\u011fi\u015ftirilmedi\u011finden emin olmak i\u00e7in, Composer&#8217;\u0131n resmi web sitesinde sa\u011flanan SHA384 hash de\u011ferini kullanarak do\u011frulama yapmal\u0131y\u0131z. Bu hash de\u011feri zaman zaman de\u011fi\u015febilir, bu y\u00fczden en g\u00fcncel de\u011feri <code>https:\/\/composer.org\/download\/<\/code> adresinden kontrol etmeniz \u00f6nerilir.<\/p>\n<p>A\u015fa\u011f\u0131daki komut, mevcut hash de\u011ferini kullanarak do\u011frulama yapar. E\u011fer hash uyu\u015fmazsa, indirdi\u011finiz dosya bozuk veya de\u011fi\u015ftirilmi\u015f olabilir.<\/p>\n<pre><code class=\"language-bash\">HASH=$(curl -sS https:\/\/composer.org\/installer | php --r \"echo hash_file('sha384', 'composer-setup.php');\")\nif [ \"$HASH\" != \"$(curl -sS https.composer.org\/installer | grep -oP '(?<=signature=\")[^\"]*')\" ]; then\n    echo 'HATA: Composer kurulum dosyas\u0131 do\u011frulanamad\u0131!' >&2\n    rm composer-setup.php\n    exit 1\nfi\necho 'Composer kurulum dosyas\u0131 do\u011fruland\u0131.'<\/code><\/pre>\n<p><em>Not: Yukar\u0131daki do\u011frulama komutu, Composer&#8217;\u0131n kendi sitesinden g\u00fcncel hash&#8217;i \u00e7ekip kar\u015f\u0131la\u015ft\u0131ran dinamik bir komuttur. Bu, manuel olarak hash kopyalay\u0131p yap\u0131\u015ft\u0131rmaktan daha g\u00fcvenli ve otomatiktir.<\/em><\/p>\n<h3>Composer&#8217;\u0131 Global Olarak Kurma<\/h3>\n<p>Do\u011frulama ba\u015far\u0131l\u0131 olduktan sonra, kurulum beti\u011fini \u00e7al\u0131\u015ft\u0131rabiliriz. Bu betik, Composer&#8217;\u0131 mevcut dizininize <code>composer.phar<\/code> ad\u0131yla kuracakt\u0131r. Daha sonra bu dosyay\u0131 sistem PATH&#8217;inize eklenmi\u015f bir konuma ta\u015f\u0131yarak global olarak eri\u015filebilir hale getirece\u011fiz.<\/p>\n<pre><code class=\"language-bash\">sudo php composer-setup.php --install-dir=\/usr\/local\/bin --filename=composer<\/code><\/pre>\n<p>Bu komut:<\/p>\n<ul>\n<li><code>sudo php composer-setup.php<\/code>: \u0130ndirilen beti\u011fi root yetkileriyle \u00e7al\u0131\u015ft\u0131r\u0131r.<\/li>\n<li><code>--install-dir=\/usr\/local\/bin<\/code>: Composer&#8217;\u0131n <code>\/usr\/local\/bin<\/code> dizinine kurulmas\u0131n\u0131 sa\u011flar. Bu dizin genellikle sistem PATH&#8217;inde bulunur.<\/li>\n<li><code>--filename=composer<\/code>: Y\u00fcr\u00fct\u00fclebilir dosyan\u0131n ad\u0131n\u0131 <code>composer<\/code> olarak belirler, b\u00f6ylece <code>composer.phar<\/code> yerine do\u011frudan <code>composer<\/code> yazarak \u00e7al\u0131\u015ft\u0131rabiliriz.<\/li>\n<\/ul>\n<p>Kurulum tamamland\u0131ktan sonra, indirdi\u011fimiz <code>composer-setup.php<\/code> dosyas\u0131n\u0131 silebiliriz:<\/p>\n<pre><code class=\"language-bash\">rm composer-setup.php<\/code><\/pre>\n<h3>Kurulumun Do\u011frulanmas\u0131<\/h3>\n<p>Composer&#8217;\u0131n do\u011fru bir \u015fekilde kurulup kurulmad\u0131\u011f\u0131n\u0131 kontrol etmek i\u00e7in s\u00fcr\u00fcm bilgisini sorgulayabiliriz:<\/p>\n<pre><code class=\"language-bash\">composer --version<\/code><\/pre>\n<p>E\u011fer kurulum ba\u015far\u0131l\u0131ysa, Composer&#8217;\u0131n s\u00fcr\u00fcm numaras\u0131n\u0131 g\u00f6steren bir \u00e7\u0131kt\u0131 al\u0131rs\u0131n\u0131z:<\/p>\n<pre><code class=\"language-\">Composer version 2.x.x YYYY-MM-DD HH:MM:SS<\/code><\/pre>\n<h2>Composer&#8217;\u0131 Kullanmaya Ba\u015flama<\/h2>\n<p>Composer art\u0131k VPS&#8217;inizde kurulu ve kullan\u0131ma haz\u0131r. \u015eimdi temel Composer komutlar\u0131n\u0131 ve bir PHP projesinde nas\u0131l kullan\u0131laca\u011f\u0131n\u0131 g\u00f6relim.<\/p>\n<h3>Yeni Bir Proje Ba\u015flatma (composer init)<\/h3>\n<p>Yeni bir PHP projesi ba\u015flatt\u0131\u011f\u0131n\u0131zda veya mevcut bir projeye Composer ekledi\u011finizde <code>composer init<\/code> komutunu kullan\u0131rs\u0131n\u0131z. Bu komut, projenizin ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 ve di\u011fer meta verilerini tan\u0131mlayan <code>composer.json<\/code> dosyas\u0131n\u0131 interaktif olarak olu\u015fturman\u0131za yard\u0131mc\u0131 olur.<\/p>\n<p>\u00d6ncelikle, yeni bir proje dizini olu\u015ftural\u0131m ve i\u00e7ine girelim:<\/p>\n<pre><code class=\"language-bash\">mkdir my_php_app\ncd my_php_app<\/code><\/pre>\n<p>\u015eimdi <code>composer init<\/code> komutunu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">composer init<\/code><\/pre>\n<p>Composer size proje hakk\u0131nda \u00e7e\u015fitli sorular soracakt\u0131r (paket ad\u0131, a\u00e7\u0131klama, yazar, minimum kararl\u0131l\u0131k, lisans vb.). \u00c7o\u011fu durumda varsay\u0131lan de\u011ferleri kabul edebilir veya kendi bilgilerinizi girebilirsiniz. \u00d6zellikle &#8220;Would you like to define your dependencies (require) interactively?&#8221; sorusuna &#8220;yes&#8221; diyerek ba\u011f\u0131ml\u0131l\u0131k eklemeye ba\u015flayabilirsiniz.<\/p>\n<p>Bu i\u015flem sonucunda <code>my_php_app<\/code> dizininde <code>composer.json<\/code> ad\u0131nda bir dosya olu\u015facakt\u0131r. \u00d6rnek bir <code>composer.json<\/code> \u015f\u00f6yle g\u00f6r\u00fcnebilir:<\/p>\n<pre><code class=\"language-json\">{\n    \"name\": \"your_vendor_name\/my_php_app\",\n    \"description\": \"My first PHP application with Composer\",\n    \"type\": \"project\",\n    \"license\": \"MIT\",\n    \"authors\": [\n        {\n            \"name\": \"Your Name\",\n            \"email\": \"your_email@example.com\"\n        }\n    ],\n    \"require\": {\n        \"php\": \">=8.0\"\n    }\n}<\/code><\/pre>\n<h3>Ba\u011f\u0131ml\u0131l\u0131k Ekleme (composer require)<\/h3>\n<p>Projenize yeni bir k\u00fct\u00fcphane eklemek istedi\u011finizde <code>composer require<\/code> komutunu kullan\u0131rs\u0131n\u0131z. Composer, paketi Packagist.org adresinden arar, projenizin <code>composer.json<\/code> dosyas\u0131na ekler ve ard\u0131ndan indirir.<\/p>\n<p>\u00d6rnek olarak, pop\u00fcler bir g\u00fcnl\u00fckleme k\u00fct\u00fcphanesi olan Monolog&#8217;u projemize ekleyelim:<\/p>\n<pre><code class=\"language-bash\">composer require monolog\/monolog<\/code><\/pre>\n<p>Bu komutu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda:<\/p>\n<ul>\n<li><code>monolog\/monolog<\/code> paketi ve onun gerektirdi\u011fi t\u00fcm ba\u011f\u0131ml\u0131l\u0131klar indirilir.<\/li>\n<li>Proje k\u00f6k dizininizde <code>vendor<\/code> ad\u0131nda bir klas\u00f6r olu\u015fturulur ve t\u00fcm indirilen k\u00fct\u00fcphaneler bu klas\u00f6re yerle\u015ftirilir.<\/li>\n<li><code>composer.json<\/code> dosyas\u0131na <code>monolog\/monolog<\/code> ba\u011f\u0131ml\u0131l\u0131\u011f\u0131 ve s\u00fcr\u00fcm k\u0131s\u0131tlamas\u0131 eklenir.<\/li>\n<li><code>composer.lock<\/code> ad\u0131nda yeni bir dosya olu\u015fturulur. Bu dosya, projenizin tam olarak hangi ba\u011f\u0131ml\u0131l\u0131klar\u0131n hangi s\u00fcr\u00fcmlerini kulland\u0131\u011f\u0131n\u0131 kilitler.<\/li>\n<\/ul>\n<p><code>composer.json<\/code> dosyan\u0131z art\u0131k \u015f\u00f6yle g\u00f6r\u00fcnecektir:<\/p>\n<pre><code class=\"language-json\">{\n    \"name\": \"your_vendor_name\/my_php_app\",\n    \"description\": \"My first PHP application with Composer\",\n    \"type\": \"project\",\n    \"license\": \"MIT\",\n    \"authors\": [\n        {\n            \"name\": \"Your Name\",\n            \"email\": \"your_email@example.com\"\n        }\n    ],\n    \"require\": {\n        \"php\": \">=8.0\",\n        \"monolog\/monolog\": \"^2.0\"\n    }\n}<\/code><\/pre>\n<h3>Ba\u011f\u0131ml\u0131l\u0131klar\u0131 Y\u00fckleme (composer install)<\/h3>\n<p>Bir projeyi Git gibi bir s\u00fcr\u00fcm kontrol sisteminden klonlad\u0131\u011f\u0131n\u0131zda, <code>vendor<\/code> klas\u00f6r\u00fc genellikle dahil edilmez. Bu durumda, projenin t\u00fcm ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 y\u00fcklemek i\u00e7in <code>composer install<\/code> komutunu kullan\u0131rs\u0131n\u0131z. Bu komut, <code>composer.lock<\/code> dosyas\u0131n\u0131 okur ve orada belirtilen tam s\u00fcr\u00fcmleri indirir. E\u011fer <code>composer.lock<\/code> dosyas\u0131 yoksa, <code>composer.json<\/code> dosyas\u0131n\u0131 okur ve ba\u011f\u0131ml\u0131l\u0131klar\u0131 y\u00fckler, ard\u0131ndan bir <code>composer.lock<\/code> dosyas\u0131 olu\u015fturur.<\/p>\n<pre><code class=\"language-bash\">composer install<\/code><\/pre>\n<p>Bu komutu, yeni bir geli\u015ftirme ortam\u0131nda veya mevcut bir projenin ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 ilk kez kurarken kullan\u0131rs\u0131n\u0131z.<\/p>\n<h3>Ba\u011f\u0131ml\u0131l\u0131klar\u0131 G\u00fcncelleme (composer update)<\/h3>\n<p>Mevcut ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131z\u0131 en son uyumlu s\u00fcr\u00fcmlerine g\u00fcncellemek i\u00e7in <code>composer update<\/code> komutunu kullan\u0131rs\u0131n\u0131z. Bu komut, <code>composer.json<\/code> dosyas\u0131ndaki s\u00fcr\u00fcm k\u0131s\u0131tlamalar\u0131na g\u00f6re en yeni paket s\u00fcr\u00fcmlerini bulur, indirir ve <code>composer.lock<\/code> dosyas\u0131n\u0131 buna g\u00f6re g\u00fcnceller.<\/p>\n<pre><code class=\"language-bash\">composer update<\/code><\/pre>\n<p>Belirli bir paketi g\u00fcncellemek isterseniz:<\/p>\n<pre><code class=\"language-bash\">composer update monolog\/monolog<\/code><\/pre>\n<h3>Composer ile Basit Bir PHP Uygulamas\u0131<\/h3>\n<p>Composer&#8217;\u0131n otomatik y\u00fckleme (autoloading) \u00f6zelli\u011fini kullanarak Monolog k\u00fct\u00fcphanesini nas\u0131l kullanaca\u011f\u0131m\u0131z\u0131 g\u00f6steren basit bir PHP dosyas\u0131 olu\u015ftural\u0131m.<\/p>\n<p><code>my_php_app<\/code> dizininizde <code>index.php<\/code> ad\u0131nda bir dosya olu\u015fturun:<\/p>\n<pre><code class=\"language-php\"><?php\n\nrequire __DIR__ . '\/vendor\/autoload.php';\n\nuse Monolog\\Logger;\nuse Monolog\\Handler\\StreamHandler;\n\n\/\/ Bir logger \u00f6rne\u011fi olu\u015ftur\n$log = new Logger('my_app');\n$log->pushHandler(new StreamHandler(__DIR__ . '\/my_app.log', Logger::WARNING));\n\n\/\/ Baz\u0131 log mesajlar\u0131 yaz\n$log->warning('Bu bir uyar\u0131 mesaj\u0131d\u0131r!');\n$log->error('Bu bir hata mesaj\u0131d\u0131r!');\n\necho \"Log mesajlar\u0131 'my_app.log' dosyas\u0131na yaz\u0131ld\u0131.\\n\";\n\n?><\/code><\/pre>\n<p>Bu dosyay\u0131 kaydettikten sonra, komut sat\u0131r\u0131ndan \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">php index.php<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131 olarak &#8220;Log mesajlar\u0131 &#8216;my_app.log&#8217; dosyas\u0131na yaz\u0131ld\u0131.&#8221; mesaj\u0131n\u0131 g\u00f6rmelisiniz. Ayr\u0131ca <code>my_app.log<\/code> ad\u0131nda yeni bir dosya olu\u015ftu\u011funu ve i\u00e7inde log mesajlar\u0131n\u0131n bulundu\u011funu g\u00f6receksiniz. <code>require __DIR__ . '\/vendor\/autoload.php';<\/code> sat\u0131r\u0131 sayesinde, Monolog k\u00fct\u00fcphanesini manuel olarak <code>require<\/code> etmek zorunda kalmadan kullanabildik.<\/p>\n<h2>S\u0131k Kar\u015f\u0131la\u015f\u0131lan Sorunlar ve \u00c7\u00f6z\u00fcmleri<\/h2>\n<p>Composer kullan\u0131rken kar\u015f\u0131la\u015fabilece\u011finiz baz\u0131 yayg\u0131n sorunlar ve bunlar\u0131n \u00e7\u00f6z\u00fcmleri:<\/p>\n<h3>PHP Bellek Limiti Hatas\u0131<\/h3>\n<p>B\u00fcy\u00fck projelerde veya \u00e7ok say\u0131da ba\u011f\u0131ml\u0131l\u0131\u011f\u0131 olan projelerde Composer, varsay\u0131lan PHP bellek limitini a\u015fabilir ve &#8220;Allowed memory size of X bytes exhausted&#8221; hatas\u0131 verebilir.<\/p>\n<p><strong>\u00c7\u00f6z\u00fcm:<\/strong> PHP&#8217;nin bellek limitini art\u0131rman\u0131z gerekir. Bunu ge\u00e7ici olarak komut sat\u0131r\u0131nda yapabilir veya PHP yap\u0131land\u0131rma dosyas\u0131nda kal\u0131c\u0131 olarak de\u011fi\u015ftirebilirsiniz.<\/p>\n<p><strong>Ge\u00e7ici \u00e7\u00f6z\u00fcm (sadece bu komut i\u00e7in):<\/strong><\/p>\n<pre><code class=\"language-bash\">php -d memory_limit=-1 \/usr\/local\/bin\/composer install<\/code><\/pre>\n<p><code>memory_limit=-1<\/code> s\u0131n\u0131rs\u0131z bellek anlam\u0131na gelir. <code>2G<\/code> gibi belirli bir de\u011fer de verebilirsiniz.<\/p>\n<p><strong>Kal\u0131c\u0131 \u00e7\u00f6z\u00fcm:<\/strong><br \/>\nPHP CLI i\u00e7in <code>php.ini<\/code> dosyas\u0131n\u0131 d\u00fczenlemeniz gerekir. Bu dosyan\u0131n konumu PHP s\u00fcr\u00fcm\u00fcn\u00fcze g\u00f6re de\u011fi\u015febilir (\u00f6rne\u011fin, <code>\/etc\/php\/8.0\/cli\/php.ini<\/code>).<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/php\/8.0\/cli\/php.ini<\/code><\/pre>\n<p>Dosyay\u0131 a\u00e7t\u0131ktan sonra <code>memory_limit<\/code> sat\u0131r\u0131n\u0131 bulun ve de\u011ferini art\u0131r\u0131n:<\/p>\n<pre><code class=\"language-ini\">memory_limit = 512M ; veya daha y\u00fcksek, \u00f6rne\u011fin 1G<\/code><\/pre>\n<p>De\u011fi\u015fikli\u011fi kaydedin ve dosyay\u0131 kapat\u0131n.<\/p>\n<h3>PHP S\u00fcr\u00fcm\u00fc Uyumsuzluklar\u0131<\/h3>\n<p>Bazen bir paket belirli bir PHP s\u00fcr\u00fcm\u00fcn\u00fc gerektirirken, sunucunuzda farkl\u0131 bir s\u00fcr\u00fcm kurulu olabilir. Composer bu durumu size bildirir.<\/p>\n<p><strong>\u00c7\u00f6z\u00fcm:<\/strong><\/p>\n<ul>\n<li><code>composer.json<\/code> dosyan\u0131zdaki <code>require<\/code> b\u00f6l\u00fcm\u00fcndeki PHP s\u00fcr\u00fcm k\u0131s\u0131tlamas\u0131n\u0131 kontrol edin.<\/li>\n<li>Sunucunuzdaki PHP s\u00fcr\u00fcm\u00fcn\u00fc g\u00fcncelleyin veya projenizin gereksinimlerine uygun bir PHP s\u00fcr\u00fcm\u00fc kurun. Birden fazla PHP s\u00fcr\u00fcm\u00fcn\u00fc ayn\u0131 sunucuda \u00e7al\u0131\u015ft\u0131rmak da m\u00fcmk\u00fcnd\u00fcr.<\/li>\n<\/ul>\n<h3>\u0130zin (Permission) Hatalar\u0131<\/h3>\n<p>Composer, <code>vendor<\/code> dizinini olu\u015fturmak veya paketleri indirmek i\u00e7in yazma izinlerine ihtiya\u00e7 duyar. E\u011fer \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131z dizinde yeterli izniniz yoksa hatalarla kar\u015f\u0131la\u015fabilirsiniz.<\/p>\n<p><strong>\u00c7\u00f6z\u00fcm:<\/strong><br \/>\n\u00c7al\u0131\u015ft\u0131\u011f\u0131n\u0131z dizinin sahibi oldu\u011funuzdan veya yazma izinlerinizin oldu\u011fundan emin olun. Gerekirse dizin izinlerini ayarlay\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo chown -R kullanici_adiniz:kullanici_adiniz \/yol\/projenize\nsudo chmod -R 755 \/yol\/projenize<\/code><\/pre>\n<h3>Composer&#8217;\u0131 G\u00fcncelleme (self-update)<\/h3>\n<p>Composer&#8217;\u0131n kendisini en son s\u00fcr\u00fcme g\u00fcncellemek i\u00e7in a\u015fa\u011f\u0131daki komutu kullanabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">composer self-update<\/code><\/pre>\n<p>Bu, Composer&#8217;\u0131n yeni \u00f6zelliklerinden ve hata d\u00fczeltmelerinden yararlanman\u0131z\u0131 sa\u011flar.<\/p>\n<h2>Sonu\u00e7 ve S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h2>\n<p>Bu rehberde, Ubuntu VPS&#8217;inize Composer&#8217;\u0131 nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 ve temel ba\u011f\u0131ml\u0131l\u0131k y\u00f6netimi i\u015flemlerini nas\u0131l ger\u00e7ekle\u015ftirece\u011finizi \u00f6\u011frendiniz. Composer, modern PHP geli\u015ftirme i\u015f ak\u0131\u015f\u0131n\u0131n temel bir arac\u0131d\u0131r ve onu etkili bir \u015fekilde kullanmak, projelerinizin y\u00f6netimini b\u00fcy\u00fck \u00f6l\u00e7\u00fcde basitle\u015ftirecektir.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<p><strong>1. Composer neden yava\u015f \u00e7al\u0131\u015f\u0131yor?<\/strong><br \/>\nComposer&#8217;\u0131n yava\u015f \u00e7al\u0131\u015fmas\u0131n\u0131n birka\u00e7 nedeni olabilir:<\/p>\n<ul>\n<li><strong>A\u011f H\u0131z\u0131:<\/strong> Paketlerin indirilmesi internet ba\u011flant\u0131n\u0131z\u0131n h\u0131z\u0131na ba\u011fl\u0131d\u0131r.<\/li>\n<li><strong>Depo H\u0131z\u0131:<\/strong> Packagist.org veya kulland\u0131\u011f\u0131n\u0131z \u00f6zel depolar\u0131n yan\u0131t s\u00fcresi.<\/li>\n<li><strong>PHP Bellek Limiti:<\/strong> Yetersiz bellek limitleri performans\u0131 d\u00fc\u015f\u00fcrebilir. (Yukar\u0131daki \u00e7\u00f6z\u00fcme bak\u0131n.)<\/li>\n<li><strong>\u00d6nbellek:<\/strong> Composer&#8217;\u0131n \u00f6nbelle\u011fini temizlemek bazen performans\u0131 art\u0131rabilir: <code>composer clear-cache<\/code>.<\/li>\n<li><strong>Eski S\u00fcr\u00fcm:<\/strong> Composer&#8217;\u0131n eski bir s\u00fcr\u00fcm\u00fcn\u00fc kullan\u0131yorsan\u0131z, <code>composer self-update<\/code> ile g\u00fcncelleyin.<\/li>\n<\/ul>\n<p><strong>2. <code>composer.lock<\/code> dosyas\u0131 ne i\u015fe yarar?<\/strong><br \/>\n<code>composer.lock<\/code> dosyas\u0131, projenizin ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131n tam olarak hangi s\u00fcr\u00fcmlerini kurdu\u011funu kaydeder. Bu dosya, farkl\u0131 geli\u015ftirme ortamlar\u0131nda veya \u00fcretim sunucular\u0131nda ayn\u0131 ba\u011f\u0131ml\u0131l\u0131k s\u00fcr\u00fcmlerinin kullan\u0131lmas\u0131n\u0131 sa\u011flar, bu da &#8220;benim makinemde \u00e7al\u0131\u015f\u0131yordu&#8221; sorununu \u00f6nler. <code>composer.lock<\/code> dosyas\u0131n\u0131 s\u00fcr\u00fcm kontrol sisteminize (Git gibi) dahil etmeniz <em>\u015fiddetle<\/em> tavsiye edilir.<\/p>\n<p><strong>3. Composer ile global paketler nas\u0131l kurulur?<\/strong><br \/>\nBaz\u0131 ara\u00e7lar\u0131 (\u00f6rne\u011fin, PHPUnit, Laravel Installer) sistem genelinde kullanmak isteyebilirsiniz. Bunun i\u00e7in <code>composer global require<\/code> komutunu kullan\u0131rs\u0131n\u0131z:<\/p>\n<pre><code class=\"language-bash\">composer global require phpunit\/phpunit<\/code><\/pre>\n<p>Bu komut, paketi genellikle <code>$HOME\/.composer\/vendor\/bin<\/code> dizinine kurar. Bu dizinin sistem PATH&#8217;inizde oldu\u011fundan emin olmal\u0131s\u0131n\u0131z. E\u011fer de\u011filse, <code>.bashrc<\/code> veya <code>.profile<\/code> dosyan\u0131za a\u015fa\u011f\u0131daki sat\u0131r\u0131 ekleyebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">export PATH=\"$HOME\/.composer\/vendor\/bin:$PATH\"<\/code><\/pre>\n<p>Ard\u0131ndan <code>source ~\/.bashrc<\/code> veya <code>source ~\/.profile<\/code> komutunu \u00e7al\u0131\u015ft\u0131rarak de\u011fi\u015fikli\u011fi uygulay\u0131n.<\/p>\n<p><strong>4. Composer&#8217;\u0131 nas\u0131l kald\u0131r\u0131r\u0131m?<\/strong><br \/>\nComposer&#8217;\u0131 sisteminizden kald\u0131rmak i\u00e7in, y\u00fcr\u00fct\u00fclebilir dosyas\u0131n\u0131 silebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo rm \/usr\/local\/bin\/composer<\/code><\/pre>\n<p>Global olarak y\u00fckledi\u011finiz paketleri de silmek isterseniz, <code>$HOME\/.composer<\/code> dizinini de silebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">rm -rf ~\/.composer<\/code><\/pre>\n<p><strong>5. <code>composer dump-autoload<\/code> ne i\u015fe yarar?<\/strong><br \/>\n<code>composer dump-autoload<\/code> komutu, Composer&#8217;\u0131n otomatik y\u00fckleme dosyalar\u0131n\u0131 yeniden olu\u015fturur. Yeni s\u0131n\u0131flar ekledi\u011finizde veya <code>composer.json<\/code> dosyas\u0131ndaki <code>autoload<\/code> b\u00f6l\u00fcm\u00fcnde de\u011fi\u015fiklik yapt\u0131\u011f\u0131n\u0131zda (\u00f6rne\u011fin, yeni bir PSR-4 ad alan\u0131 tan\u0131mlad\u0131\u011f\u0131n\u0131zda) bu komutu \u00e7al\u0131\u015ft\u0131rman\u0131z gerekir. Bu komut, Composer&#8217;\u0131n s\u0131n\u0131flar\u0131n\u0131z\u0131 do\u011fru bir \u015fekilde bulabilmesini sa\u011flar.<\/p>\n<pre><code class=\"language-bash\">composer dump-autoload<\/code><\/pre>\n<p>Bu rehberin, Composer&#8217;\u0131 Ubuntu VPS&#8217;nize kurarken ve kullan\u0131rken size yard\u0131mc\u0131 olaca\u011f\u0131n\u0131 umuyoruz. \u0130yi geli\u015ftirmeler!<br \/>\n<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Giri\u015f: Composer Nedir ve Neden Kullanmal\u0131y\u0131z?\nPHP geli\u015ftirme d\u00fcnyas\u0131nda ba\u011f\u0131ml\u0131l\u0131k y\u00f6netimi, projelerin karma\u015f\u0131kl\u0131\u011f\u0131 artt\u0131k\u00e7a hay","protected":false},"author":1,"featured_media":0,"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":[1],"tags":[],"class_list":{"0":"post-31872","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"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>Giri\u015f: Composer Nedir ve Neden Kullanmal\u0131y\u0131z? - 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\/giris-composer-nedir-ve-neden-kullanmaliyiz\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Giri\u015f: Composer Nedir ve Neden Kullanmal\u0131y\u0131z?\" \/>\n<meta property=\"og:description\" content=\"Giri\u015f: Composer Nedir ve Neden Kullanmal\u0131y\u0131z? PHP geli\u015ftirme d\u00fcnyas\u0131nda ba\u011f\u0131ml\u0131l\u0131k y\u00f6netimi, projelerin karma\u015f\u0131kl\u0131\u011f\u0131 artt\u0131k\u00e7a hay\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/giris-composer-nedir-ve-neden-kullanmaliyiz\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-14T23:41:37+00:00\" \/>\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=\"3 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/giris-composer-nedir-ve-neden-kullanmaliyiz\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/giris-composer-nedir-ve-neden-kullanmaliyiz\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Giri\u015f: Composer Nedir ve Neden Kullanmal\u0131y\u0131z?\",\"datePublished\":\"2025-10-14T23:41:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/giris-composer-nedir-ve-neden-kullanmaliyiz\/\"},\"wordCount\":2114,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/giris-composer-nedir-ve-neden-kullanmaliyiz\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/giris-composer-nedir-ve-neden-kullanmaliyiz\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/giris-composer-nedir-ve-neden-kullanmaliyiz\/\",\"name\":\"Giri\u015f: Composer Nedir ve Neden Kullanmal\u0131y\u0131z? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-14T23:41:37+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/giris-composer-nedir-ve-neden-kullanmaliyiz\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/giris-composer-nedir-ve-neden-kullanmaliyiz\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/giris-composer-nedir-ve-neden-kullanmaliyiz\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Giri\u015f: Composer Nedir ve Neden Kullanmal\u0131y\u0131z?\"}]},{\"@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":"Giri\u015f: Composer Nedir ve Neden Kullanmal\u0131y\u0131z? - 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\/giris-composer-nedir-ve-neden-kullanmaliyiz\/","og_locale":"tr_TR","og_type":"article","og_title":"Giri\u015f: Composer Nedir ve Neden Kullanmal\u0131y\u0131z?","og_description":"Giri\u015f: Composer Nedir ve Neden Kullanmal\u0131y\u0131z? PHP geli\u015ftirme d\u00fcnyas\u0131nda ba\u011f\u0131ml\u0131l\u0131k y\u00f6netimi, projelerin karma\u015f\u0131kl\u0131\u011f\u0131 artt\u0131k\u00e7a hay","og_url":"https:\/\/fatihsoysal.com\/blog\/giris-composer-nedir-ve-neden-kullanmaliyiz\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-14T23:41:37+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"3 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/giris-composer-nedir-ve-neden-kullanmaliyiz\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/giris-composer-nedir-ve-neden-kullanmaliyiz\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Giri\u015f: Composer Nedir ve Neden Kullanmal\u0131y\u0131z?","datePublished":"2025-10-14T23:41:37+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/giris-composer-nedir-ve-neden-kullanmaliyiz\/"},"wordCount":2114,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/giris-composer-nedir-ve-neden-kullanmaliyiz\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/giris-composer-nedir-ve-neden-kullanmaliyiz\/","url":"https:\/\/fatihsoysal.com\/blog\/giris-composer-nedir-ve-neden-kullanmaliyiz\/","name":"Giri\u015f: Composer Nedir ve Neden Kullanmal\u0131y\u0131z? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-14T23:41:37+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/giris-composer-nedir-ve-neden-kullanmaliyiz\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/giris-composer-nedir-ve-neden-kullanmaliyiz\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/giris-composer-nedir-ve-neden-kullanmaliyiz\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Giri\u015f: Composer Nedir ve Neden Kullanmal\u0131y\u0131z?"}]},{"@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\/31872","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=31872"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31872\/revisions"}],"predecessor-version":[{"id":31873,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31872\/revisions\/31873"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=31872"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=31872"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=31872"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}