<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: İstanbul PHP</title>
    <description>The latest articles on DEV Community by İstanbul PHP (@istanbulphp).</description>
    <link>https://dev.to/istanbulphp</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F4683%2F64f30684-9c30-4b27-b71d-17f510912560.png</url>
      <title>DEV Community: İstanbul PHP</title>
      <link>https://dev.to/istanbulphp</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/istanbulphp"/>
    <language>en</language>
    <item>
      <title>Windows üzerinde geliştirme ortamı kurulumu</title>
      <dc:creator>Pınar Suvaçoğlu</dc:creator>
      <pubDate>Mon, 20 Feb 2023 20:27:24 +0000</pubDate>
      <link>https://dev.to/istanbulphp/windows-uzerinde-gelistirme-ortami-kurulumu-52fd</link>
      <guid>https://dev.to/istanbulphp/windows-uzerinde-gelistirme-ortami-kurulumu-52fd</guid>
      <description>&lt;h1&gt;
  
  
  Windows Üzerinde Geliştirme Ortamı Kurulumu
&lt;/h1&gt;

&lt;p&gt;Yeni yazılım öğrenmeye başlayan, ilk kurulumları nasıl yapacağını düşünenler için git, github'da proje oluşturma, ssh key ekleme, PHP için laragon kurulumu, composer kurulumu gibi konuları kısaca yazdım. &lt;/p&gt;

&lt;h1&gt;
  
  
  Windows üzerinde git kurulumu ve git bash ile unix command line kullanımı
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://gitforwindows.org/" rel="noopener noreferrer"&gt;https://gitforwindows.org/&lt;/a&gt; sayfasından git için gerekli kurulum dosyasını indiriyoruz ve çalıştırıyoruz. Herhangi bir değişiklik yapmadan ilerleyerek kurulum yapabilirsiniz. &lt;/li&gt;
&lt;li&gt;Terminal'de unix command line kullanımı için &lt;strong&gt;git bash&lt;/strong&gt; kullanılabileceği gibi, ben windows üzerinde terminal olarak "&lt;a href="https://hyper.is/" rel="noopener noreferrer"&gt;Hyper Terminal&lt;/a&gt;" tercih ediyorum. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hyper Terminal&lt;/strong&gt; kurulumu için, Git bash kurulumundan sonra &lt;a href="https://hyper.is" rel="noopener noreferrer"&gt;https://hyper.is&lt;/a&gt; 'den windows için kurulumu indirin, setup dosyasını çalıştırın. &lt;/li&gt;
&lt;li&gt;Kurulum tamamlandığında hyper'a girin ve sol üstten &lt;strong&gt;edit &amp;gt; preference&lt;/strong&gt; içerisine girin, içindekilerin hepsini silip &lt;a href="https://gist.github.com/coco-napky/404220405435b3d0373e37ec43e54a23" rel="noopener noreferrer"&gt;bu linkteki repository'den&lt;/a&gt; ayarları kopyalayıp yapıştırın ve kayıt edin. Hyper terminali kapatıp açın, artık unix komutlarını hyper terminalde kullanabilirsiniz. 🎉&lt;/li&gt;
&lt;li&gt;Hyper terminal , çokça teması olan, ekleyebileceğiniz bir sürü pluginler, bulunan, kendinize göre özelleştirebildiğiniz bir terminal.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Git ile local repository oluşturmak.
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Terminalde projenizin ana dizininde iken
&amp;gt; git init.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;komutunu çalıştırarak projenize git versiyon kontrol sistemini eklemiş oluyorsunuz.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;git add .&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;komutu ile projenizin içerisindeki tüm dosyaları &lt;strong&gt;staging area&lt;/strong&gt;(Git klasörünüzde bulunan ve bir sonraki kayıt işlemine dahil olacak olan kodları tutan dosya). Eğer spesifik bir dosyayı eklemek istiyorsak ilgili dosyanın adını uzantısı ile birlikte yazarak ekleyebiliriz &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;git add deneme.txt&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;staging area&lt;/strong&gt;'daki kaydedilen kodları bu komutun yazıldığı andaki hali ile kayıt etmek için aşağıdaki komutu çalıştırıyoruz ve yaptığımız değişiklikler local repository'mize kayıt edilmiş oluyor.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;git commit -m "initial commit"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Github ile remote repository oluşturmak.
&lt;/h1&gt;

&lt;h2&gt;
  
  
  - &lt;a href="https://github.com/" rel="noopener noreferrer"&gt;Github&lt;/a&gt; 'ın ana sayfasından eğer üyeliğimiz yok ise "signup" ile kayıt oluyoruz. Kayıt formunu doldurup hızlıca üye olabilirsiniz.
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Github'a üye olduktan sonra, sağ üstte &lt;strong&gt;+&lt;/strong&gt; simgesine basarak &lt;strong&gt;"new repository"&lt;/strong&gt; ye giriyoruz.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv95c2rqimode0i5jwykj.jpg" alt="New Repository" width="350" height="262"&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Açılan sayfadan, projemizin ismini ve açıklamalarını giriyoruz. Hali hazırda olan bir projenizi ekleyecekseniz zaten içerisinde mevcut &lt;strong&gt;readme&lt;/strong&gt; ve &lt;strong&gt;gitignore&lt;/strong&gt; dosyaları olacağı için burada oluşturmak zorunda değilsiniz. Projeniz ile birlikte de oluşturabilirsiniz.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi4ynp1fkmcfuhcxqpjh7.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi4ynp1fkmcfuhcxqpjh7.jpg" alt="enter image description here" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Yukarıda oluşturduğumuz &lt;strong&gt;local repository&lt;/strong&gt;'i şimdi buradaki komutlar ile &lt;strong&gt;remote repository&lt;/strong&gt;'e göndereceğiz.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbnufnuygbl6umiobozy0.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbnufnuygbl6umiobozy0.jpg" alt="enter image description here" width="640" height="368"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Görselde ikinci kısımdaki
&amp;gt; git remote add origin &lt;a href="https://github.com/Katjulidis/my-laravel-project.git" rel="noopener noreferrer"&gt;https://github.com/Katjulidis/my-laravel-project.git&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;komut satırını çalıştırıyoruz. Böylece localde commitlediğimiz repository'i remote olarak stage'e eklemiş oluyoruz. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;git branch -M main&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;burada main yerine başka bir isim de verebilirsiniz. Ancak genel olarak ana branch için "main" ya da "master" isimlendirilmeleri yapılır.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;git push -u origin main&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;komutu ile local repository, remote repository'e kopyalanmış olur.&lt;/p&gt;

&lt;h1&gt;
  
  
  Github hesabına ssh key eklenmesi
&lt;/h1&gt;

&lt;p&gt;SSH key, güvenli parola doğrulanmasını sağlamak için kullanılan anahtardır.*&lt;a href="https://www.cenuta.com/blog/ssh-key-nedir-ssh-key-anahtar-olusturma-islemi/" rel="noopener noreferrer"&gt;ssh key nedir?&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;İlk başta kurulumunu yaptığımız Hyper terminal ile git bash komutlarına ulaşabiliriz&lt;/li&gt;
&lt;li&gt;Anahtar oluşturmaya başlamak için, aşağıdaki koda kendi github hesabınıza ait mail adresini ekleyerek terminale yazıyoruz.
&amp;gt; ssh-keygen -t ed25519 -C "&lt;a href="mailto:your_email@example.com"&gt;your_email@example.com&lt;/a&gt;"&lt;/li&gt;
&lt;li&gt;"Enter a file in which to save the key" kısmını direk enter tuşuna basarak geçebilirsiniz, key'İ default olarak belirlediği directory'e kaydedicektir.&lt;/li&gt;
&lt;li&gt;"Enter passphrase" kısmında, SSH anahtarlarınızı her kullandığınızda parolanızı yeniden girmek zorunda kalmamak için bir kimlik doğrulama aracısı yapılandırabilirsiniz. (&lt;strong&gt;passphrase yazarken terminalde yazdığınız harfler/rakamlar gözükmeyecektir, phassphrase'inizi iki kere girmenizi isteyeceği için tek seferde yazıp enter ile ilerleyerek sorunsuz geçebilirsiniz bu kısmı&lt;/strong&gt;) &lt;a href="https://docs.github.com/en/authentication/connecting-to-github-with-ssh/working-with-ssh-key-passphrases" rel="noopener noreferrer"&gt;Daha detaylı bilgi için&lt;/a&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs66dc7gufxt1ruelot7h.jpg" alt="SSH Key oluşturma" width="640" height="308"&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;işlem tamamlandığında yukarıdaki gibi bir ekranla karşılaşmanız gerekiyor.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Github'da SSH key sekmesine aşağıdaki gibi ulaşabilirsiniz.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flw7kco2i0f3hswhmb2mi.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flw7kco2i0f3hswhmb2mi.jpg" alt="enter image description here" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;New SSH Key'e girdiğinizde aşağıdaki gibi bir ekran gelecek. En soldaki gibi .ssh klasörünün içerisindeki, sonu .pub ile biten dosyayı notepad ile açıp, içeriğini kopyalayın ve github'daki ilgili alana yapıştırıp "Add SSH key" ile keyinizi kayıt edin 🎉&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2qal9dz8a6a6q8tvtky3.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2qal9dz8a6a6q8tvtky3.jpg" alt="enter image description here" width="640" height="320"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Laragon Kurulumu
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://laragon.org/download/" rel="noopener noreferrer"&gt;Laragon&lt;/a&gt; aynı xampp ve wamp gibi, localhost geliştirme ortamını sağlayan programdır. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;git, phpmyadmin, Node.js/MongoDB, Python/Django/Flask/Postgres, Ruby, Java, Go&lt;/strong&gt; için geliştirme ortamlarını destekler. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;-Kurulum yaptıktan sonra sol alttaki &lt;strong&gt;start all&lt;/strong&gt; ile mevcut yüklü programları çalıştırır.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwlxigr33wkfwcv7q2js2.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwlxigr33wkfwcv7q2js2.jpg" alt="enter image description here" width="640" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;İster laragon üzerinde her hangi bir yere sağ tıklayıp, ister windows simgelerinin olduğu yerden logosuna sağ tıklayarak,  &lt;strong&gt;Tool &amp;gt; Quick Add&lt;/strong&gt; ile kolayca istediğiniz ortamı ekleyebilirsiniz.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuq1jx7ifi3wclh7niygp.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuq1jx7ifi3wclh7niygp.jpg" alt="enter image description here" width="640" height="510"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Geliştirme yapacağınız klasörleri &lt;strong&gt;Laragon &amp;gt; www&lt;/strong&gt; klasörünün içine eklemelisiniz. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Laragon'u &lt;strong&gt;start&lt;/strong&gt; ile başlattığınızdan emin olduktan sonra adres satırına &lt;strong&gt;localhost/proje-klasör-adı&lt;/strong&gt; yazdığınızda çalışıyor olacaktır. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Henüz bir proje eklemediyseniz, laragonun test için eklediği &lt;strong&gt;index.php&lt;/strong&gt; dosyası mevcut, adres satırına &lt;strong&gt;localhost&lt;/strong&gt; yazdığınızda çalışıyor olduğunu göreceksiniz.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8ahez3xe0sv5uz3zw61u.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8ahez3xe0sv5uz3zw61u.jpg" alt="enter image description here" width="640" height="334"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Composer Kurulumu
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;PHP'nin bağımlılık ve paket yöneticisi olan Composer kurulumu için &lt;a href="https://getcomposer.org/doc/00-intro.md#installation-windows" rel="noopener noreferrer"&gt;buradan&lt;/a&gt; &lt;strong&gt;&lt;a href="https://getcomposer.org/Composer-Setup.exe" rel="noopener noreferrer"&gt;Composer-Setup.exe&lt;/a&gt;.&lt;/strong&gt; 'yi indirip hızlıca kurulum yapabilirsiniz.&lt;/li&gt;
&lt;li&gt;Laragonun terminalini açıp &lt;strong&gt;composer --version&lt;/strong&gt; ile composer sürümünüzü kontrol edebilirsiniz.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Bağımlılıkları yüklemek için&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;composer require paket_adi&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Paket kurulumu yapıldıktan sonra vendor klasörü içerisinde &lt;strong&gt;composer.json&lt;/strong&gt; isimli dosyada kurduğunuz paketleri görebilirsiniz.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Hali hazırda mevcut &lt;strong&gt;composer.json&lt;/strong&gt; dosyanız varsa, içerisindeki paketlerin kurulması için terminale aşağıdaki komutu girmeniz gerekiyor.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;composer install &lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;mevcut paketleri güncellemek için&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;composer update&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Önemli Not&lt;/strong&gt;: Windows üzerinde composer indirilirken, kurulum yapıldıktan sonra terminale aşağıdaki komut girilerek, windowsta olmayan php paketleri görmezden gelmesini sağlayarak, çıkacak hataların önüne geçmiş olursunuz.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;composer install --ignore-platform-reqs&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Npm Kurulumu
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://docs.npmjs.com/" rel="noopener noreferrer"&gt;Npm&lt;/a&gt; uygulamanızda size kolaylık sağlayacak 3.parti yazılımları yüklemeyi ve bağımlılıkları yönetmeyi sağlayan paket yöneticisidir. &lt;/li&gt;
&lt;li&gt;Npm  &lt;code&gt;package.json&lt;/code&gt; dosyası ile projede kullanılan tüm paket ve bağımlılıkları barındırır. &lt;/li&gt;
&lt;li&gt;Npm kurulumu için Node.js kurulması gerekiyor, &lt;a href="https://nodejs.org/en/download/" rel="noopener noreferrer"&gt;node.js'in&lt;/a&gt; sitesinden indirme işlemini yaptığınızda npm'de onunla birlikte kurulmuş olacak. Yüklemeden sonra terminale &lt;code&gt;node -v&lt;/code&gt; yazdığınızda aşağıdaki gibi bir çıktı almanız gerekiyor. Tabii ki versiyonu yüklediğiniz güne göre değişiklik gösterebilir. Npm'i de aynı şekilde &lt;code&gt;npm -v&lt;/code&gt; ile yüklendiğini kontrol edebilirsiniz.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp5slr07vxj3gx9ag448d.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp5slr07vxj3gx9ag448d.jpg" alt="Node Version" width="221" height="48"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;package.json&lt;/code&gt; dosyasını oluşturmak için projenizin ana dizininde &lt;code&gt;npm init&lt;/code&gt; komunu çalıştırmanız gerekiyor. Bu kısmı atlayıp daha sonra package.json üzerinden bu değişiklikleri yapmak istiyorsanız &lt;code&gt;npm init -y&lt;/code&gt; ile bu kısmı geçebilirsiniz.&lt;/li&gt;
&lt;li&gt;İçerisinde bağımlılıkları ve paketleri olan &lt;code&gt;package.json&lt;/code&gt; dosyası aşağıdaki gibi görünecektir&lt;/li&gt;
&lt;li&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiq5tom8mexhxsmi4r6wo.jpg" alt="enter image description here" width="640" height="614"&gt;&lt;/li&gt;
&lt;li&gt;Bu sayede projelerimizi github'a gönderirken &lt;code&gt;.gitignore&lt;/code&gt; 'a &lt;strong&gt;node_modules&lt;/strong&gt; klasörünü ekleriz ve büyük boyutlu bu paket dosyalarını göndermemiş oluruz. Projeyi bir başkası indirdiğinde ve ya bir başkasının projesini local'de çalıştırmak istediğinizde &lt;code&gt;npm init&lt;/code&gt; komutu ile tüm tanımlı bağımlılıkları yükleyebilirsiniz.&lt;/li&gt;
&lt;li&gt;Bir paket global olarak yüklenmek istendiğinde
&lt;code&gt;npm install &amp;lt;paket adı&amp;gt; -g --save-dev&lt;/code&gt; komutu kullanılır. 

&lt;ul&gt;
&lt;li&gt;Projeye özel olarak yüklenmekk istendiğinde sadece 
&lt;code&gt;npm install &amp;lt;paket adı&amp;gt; --save-dev&lt;/code&gt; yazılması yeterlidir&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Laravel Incoming Emails</title>
      <dc:creator>Ahmet Korkmaz</dc:creator>
      <pubDate>Mon, 20 Dec 2021 11:36:22 +0000</pubDate>
      <link>https://dev.to/istanbulphp/laravel-incoming-emails-3bo8</link>
      <guid>https://dev.to/istanbulphp/laravel-incoming-emails-3bo8</guid>
      <description>&lt;p&gt;Herkese merhaba! Bu yazı da laravel içerisinde gelen emailleriniz nasıl handle edebileceğiniz inceleyeceğiz. Bunu için laravel'de BeyondCode tarafından açık kaynak olarak geliştirilmiş &lt;a href="https://github.com/beyondcode/laravel-mailbox"&gt;laravel-mailbox&lt;/a&gt; paketini kullanacağız.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Not: laravel-mailbox paketini kullanmadan önce bilmelisiniz ki paketin desteklediği servisler mailgun, postmark ve sendgrid servisleridir.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;laravel-mailbox paketini laravel projenize eklemek için aşağıdaki komutu kullanabilirsiniz.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;composer required beyondcode/laravel-mailbox
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;laravel-mailbox paketinin kullanımı ve konfigürsayon işlemleri için publish işlemi yapılması gerekiyor.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;php artisan vendor:publish &lt;span class="nt"&gt;--provider&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"BeyondCode&lt;/span&gt;&lt;span class="se"&gt;\M&lt;/span&gt;&lt;span class="s2"&gt;ailbox&lt;/span&gt;&lt;span class="se"&gt;\M&lt;/span&gt;&lt;span class="s2"&gt;ailboxServiceProvider"&lt;/span&gt; &lt;span class="nt"&gt;--tag&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"migrations"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;php artisan vendor:publish &lt;span class="nt"&gt;--provider&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"BeyondCode&lt;/span&gt;&lt;span class="se"&gt;\M&lt;/span&gt;&lt;span class="s2"&gt;ailbox&lt;/span&gt;&lt;span class="se"&gt;\M&lt;/span&gt;&lt;span class="s2"&gt;ailboxServiceProvider"&lt;/span&gt; &lt;span class="nt"&gt;--tag&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"config"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ardından paket için gerekli tablonun oluşturulması için migration dosyasını çalıştırmanız gerekmektedir.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;php artisan migrate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Paketin kurulumu bittikten sonra temel kullanımı inceleyelim.&lt;br&gt;
Paket kullanımı için AppServiceProvider içerisine hangi email adresini hangi sınıf ile handle edeceğinizi belirtmeniz gerekmektedir.&lt;br&gt;
Örnek:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;BeyondCode\Mailbox\InboundEmail&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;BeyondCode\Mailbox\Facades\Mailbox&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;AppServiceProvider&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;ServiceProvider&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="cd"&gt;/**
     * Bootstrap any application services.
     *
     * @return  void
     */&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;boot&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// when send email someone to sender@domain.com, InboundEmailHandler class will working&lt;/span&gt;
        &lt;span class="c1"&gt;// InboundEmailHandler is a Invokable Class&lt;/span&gt;
        &lt;span class="nc"&gt;Mailbox&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;to&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'sender@domain.com'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;InboundEmailHandler&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;class&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

            &lt;span class="c1"&gt;// You can use like this.&lt;/span&gt;
        &lt;span class="nc"&gt;Mailbox&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;to&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'sender@domain.com'&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;InboundEmail&lt;/span&gt; &lt;span class="nv"&gt;$email&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="c1"&gt;// InboundEmail some available methods&lt;/span&gt;
                &lt;span class="nv"&gt;$id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$email&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;id&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
                &lt;span class="nv"&gt;$date&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$email&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nb"&gt;date&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
                &lt;span class="nv"&gt;$html&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$email&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;html&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
                &lt;span class="nv"&gt;$text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$email&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;text&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
                &lt;span class="nv"&gt;$subject&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$email&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;subject&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
                &lt;span class="nv"&gt;$from&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$email&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;from&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
                &lt;span class="c1"&gt;// Handle incoming email&lt;/span&gt;
        &lt;span class="p"&gt;});&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;laravel-mailbox paketini gerçek bir kullanımda inceleyelim.&lt;br&gt;
Örneğin kullanıcı özelinde gelen emailler ile görev oluşturmak istiyor olalım.&lt;br&gt;
Bunun için kullanıcıların her biri için ayrı email adresi olması gerekmektedir. Kullanıcılar için bunun isim - soyisim - rastgele bir değer (ahmet-korkmaz-adas76fa87dfa) olarak düşünelim. Bunun için users tablonuza yeni bir sütun oluşturmanız gerekmektedir. Bu durumun hazır olduğunu düşünerek mailbox ile ilgili kodlarımızı yazmaya başlayalım.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="c1"&gt;// AppServiceProvider.php&lt;/span&gt;

&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;BeyondCode\Mailbox\Facades\Mailbox&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;AppServiceProvider&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;ServiceProvider&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="cd"&gt;/**
     * Bootstrap any application services.
     *
     * @return  void
     */&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;boot&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// You can use userEmail as a variable in CreateTaskHandler invoke method.&lt;/span&gt;
        &lt;span class="nc"&gt;Mailbox&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;from&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'{userEmail}@domain.com'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;CreateTaskHandler&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;class&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="c1"&gt;// app/InboundEmails/CreateTaskHandler.php&lt;/span&gt;

&lt;span class="kn"&gt;namespace&lt;/span&gt; &lt;span class="nn"&gt;App\InboundEmails&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;BeyondCode\Mailbox\InboundEmail&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;CreateTaskHandler&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;__invoke&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;InboundEmail&lt;/span&gt; &lt;span class="nv"&gt;$email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$userEmail&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nv"&gt;$user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;User&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;where&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'inbound_email'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$userEmail&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;first&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="nv"&gt;$task&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$user&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;tasks&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
                    &lt;span class="s1"&gt;'title'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;$email&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;subject&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
                    &lt;span class="s1"&gt;'description'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;$email&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;text&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
                &lt;span class="p"&gt;]);&lt;/span&gt;

                &lt;span class="c1"&gt;// $email-&amp;gt;cc() return array and you can attach cc users to task users&lt;/span&gt;
                &lt;span class="nv"&gt;$task&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;users&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;attach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$email&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;cc&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sonuç olarak, laravel-mailbox paketini kullanarak gelen emailleri handle etmek çok kolay. Buna ek olarak task oluşturduktan sonra kullanıcıya success maili reply edebilirsiniz.&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>istanbulphp</category>
      <category>php</category>
    </item>
  </channel>
</rss>
