项目作者: ofke-yazilim

项目描述 :
Laravel 5.5 Wamp Server
高级语言: PHP
项目地址: git://github.com/ofke-yazilim/laravel-proje.git
创建时间: 2017-12-07T18:24:57Z
项目社区:https://github.com/ofke-yazilim/laravel-proje

开源协议:

下载


laravel-proje Wamp 3.1.0 Local Windows Projesi

Laravel 5.6 Wamp Server

1 - LARAVEL KURULUMU VE WİNDOWS SANAL SUNUCU OLUŞTURULMASI


  • Windows üzerine http://www.wampserver.com/en/# adresinden wamp server indirip kuruyoruz.

  • Wamp server kurulumu bittikten sonra C://wamp64/www dizini içerisinde laravel adında bir klasör oluşturuyoruz.

  • Ardından composer kullanarak laravel dosyalarını laravel klasörümüzün içerisine kuruyoruz.


  • Not : Windows Üzerine Composer kurulumu yapmadıysanız Aşağıdaki Adımları Takip Edin

    • Composer nasıl kurulur : https://getcomposer.org/Composer-Setup.exe adresinden indirilen exe next, next ile kurulur.

    • Ardından command ekranı kullanılarak composer eklenmek istenilen projeye gidilir örneğin ben wamp üzerinde proje yapıyorum “cd C:\wamp64\www\laravel” bu projeye gidebilirim.

    • Proje yolunu command ekranında tanıttıktan sonra “composer init” yazarak composer.json dosyamı oluturuyorum. (composer.json oluştururken bir kaç bilgi isteyecek bizden.girerek enter yapalım.)



  • Command ekranında cd C:\wamp64\www\laravel dizinine giderek
    composer create-project —prefer-dist laravel/laravel laravelproje

    Kodunu çalıştırıyorum bir süre sonra laravel kurulumum tamamlanıyor.


  • Yukarıdaki adımları takip edip Laravel dosyalarımı local bilgisayarıma indirdim şimdi sanal sunucu oluşturarak projenin çalışmasını sağlamalıyım bunun için aşağıdaki adımları takip etmeliyim.

    • Wamp server ile kurulu olarak gelen apache dizini içerisinde bulunan httpd.conf dosyası açılarak Include conf/extra/httpd-vhosts.conf yazısı bulunur ve aktif edilir.

      Not : Benim httpd.conf dizinimin dosya yolu :
      C:\wamp64\bin\apache\apache2.4.23\conf \ httpd.conf

    • Daha sonra C:\wamp64\bin\apache\apache2.4.23\conf\extra dizini içerisinde bulunan httpd-vhosts.conf dosyası açılarak sanal sunucu yönlendirmeleri yapılır . Örneğin ben laravel projemin http://laravel.localhost/ şeklinde açılmasını istiyorsam https://github.com/ofke-yazilim/laravel-proje/blob/master/httpd-vhost.conf dosyasında bulunan kodları httpd-vhosts.conf dosyasının en altına eklerim .





  • Yukarıdaki işlemlerden sonra wamp server restart edilir ve browser açılarak http://laravel.localhost/ adresine gidilerek projenin çalıştığı görülür.




2 - LARAVEL KULLANIM AŞAMALARI




2.1 Migration Kullanımı



  • Öncelikle projemiz içerisinde kullanacağımız veritabanı bilgilerini .env dosyasına belirtiyoruz. .env dosyası direk ana dizin içerisinde bulunur.


  • Migration kullanılarak database içerisinde tablolar oluştururuz. Migration dizini dosya yolu: /database/migrations


2.2 Route ve Controller Kullanımı


Route Laravel üzerinde yönlendirme işlemlerini yaptığımız kısımdır. Laravel 5.6 üzerinde yönlendirme işlmeleri ana dizin içerisinde
routes/web.php üzerinde yapılmaktadır.Routes isteklerin bir controller dosyasına ya da view dosyasına yönelmesini sağlar ya da yönlendirme
yapmadan işlemlerinizi direk bu kısımda yapablirsiniz. Ayrıntılı kullanım örneklerini : https://github.com/ofke-yazilim/laravel-proje/blob/master/routes/web.php
adresinden inceleyebilirsiniz.





Aşağıda Bahselilen Satır numaralarını incelemek için https://github.com/ofke-yazilim/laravel-proje/blob/master/routes/web.php
sayfasını açınız.





  • Route üzerinde direk view ekranına yönlendirme yapabiliriz.Benim projem içerisinde routes/web.php 15. satırda örnek görebilirsiniz.

  • İşlemleri direk olarak route üzerinde yapabiliriz. Örneğin ekrana bir string yazdırabiliriz.Örnek için 21. satır inceleyebilirsiniz.

  • Url üzerinde herhangi bir parametre göndrerek işlem yapabilirsiniz. Örnek için 26. satır.

  • Url üzerinden parametre gönderme işlemlerinde eğer istenilen parametre gönderilmez ize hata verir örneğin
    diyelim ki http:\laravel.localhost\urunler\1 şeklinde çalışan bir adresimiz olsun eğer biz bu adresi
    http:\laravel.localhost\urunler\ şeklinde çalıştırır isek hata verir bu hatayı optional kullanral önleyebiliriz
    optional parametre boş olarak gelirse default olarak atanan bir değere göre işlem yapmamızı sağlar. Örnek için 31. ve 38. satırlar.

  • Kullanılan route işlemine isim vermek için bakınız 45.satır. Route verilen isim sayfa içerisinde yani view yapıları içerisinde
    tanımlamada kolaylık sağlar. Örneğin bir route işlemine “routeislem” adında tanımlar ise view içerisinde yönlendirme link adresine
    {{route(‘routeislem’)}} yazılarak ulaşılabilir.


  • Route üzerinden controller dosyasına yönlendirme örneği için 52. satırı inceleyebilirsiniz.

      2.2.1 Controller İşlemleri


      Controller dosyaları Model ve view yapıları arasında köprü görevi gören dosyalarımızdır.
    • Laravel üzerinde controller dosyları /app/Http/Controllers içerisinde bulunur.

    • Yeni bir controller oluşturulurken iki yöntem vardır 1.yöntem php artisan make:controller newcontroller
      Bu yöntem ile newcontroller.php adında bir controller dosyamız oluşur. Bu dosya içerisinde class hazır gelir fakat
      fonksiyonları biz oluştururuz. Örneğin : https://github.com/ofke-yazilim/laravel-proje/blob/master/app/Http/Controllers/newcontroller.php

    • 2. yöntem ise php artisan make:controller new2controller —resource şeklinde çalışan sistemdir.
      Bu yöntemde index,store,create.. vb fonksiyonlar hazır olarak gelir.

      Örneğin https://github.com/ofke-yazilim/laravel-proje/blob/master/app/Http/Controllers/new2controller.php dosyasını inceleyebilirsiniz.

    • 2.yöntem ile tanımlama yaparsak route yönlendirme işlemlerini çok kolaylaştırmış oluruz öreneğin yukarıda oluşturmuş olduğumuz
      new2controller adındaki controller dosyasına yönlendirme yaparken Route::resource(‘yonetimpaneli’,’new2controller’);
      yazarız bu sayede hazır olarak gelen tüm fonksiyonların yönlendirme linkleri oluşturulmuş olur. Örnek için 130.satır.



  • Route üzerinde namespace kullanımı : Namespace şu nedenle gereklidir diyelimki urunler adında iki adet controller oluşturmak istiyoruz
    Bu controllerden biri kullanıcı arayüzü işlemleri için diğeri yönetim paneli işlemleri için kullanılmak isteniyor olsun fakat aynı klasör
    içinde urunler adında iki adet dosya oluşturulamaz bu sebeple namespace geliştirilmiştir yani iki farklı klasör oluşturulur ve bu klsörler
    içerisine urunler adında controller dosyası oluşturulur.Şimdi kullanıcı arayüz urunler için ve yönetim paneli ürünler için
    kullanılacak olan controller dosyalarını oluşturan kodları yazalım.

    php artisan make:controller admin/urunler —resource

    php artisan make:controller kullanici/urunler —resource

    Controller dosyalarımız oluştu şimdi bu controller dosyalarına route üzerinde nasıl yönlendirildiğini görmek için 33.satır- 43.satır arasını
    inceleyebilirsiniz.

  • Oluşturulan route yönlendirmelerinin listesini ve link yapılarını görebilmek için php artisan controller:list
    kodu kullanılır.

  • Route dosyası içerisinde query builder işlemleri yapıldı örnek query builder kullanımları için.
    66. satırdan itibaren inceleyebilirsiniz. Daha ayrıntılı bilgi için https://laravel.com/docs/5.5/queries adresini
    ziyaret edin.

2.3 Collection Kullanımı


Collectionlar Laravel içerisinde bulunan ve dizileri kullanmayı daha kullanışlı bir hale sokan methodları içeren bir sınıftır.
Bu sınıfı kullanarak array verilerimizi collectionlara çevirerek daha kolay işleyebileceğiz.

2.4 Model ve ORM Yapıları



ORM : Oluşturmuş olduğumuz nesnemiz ile veritabanı bağlantısından bağımsız olarak yapmış olduğumuz veritabanı işlemleridir.
ORM üzerinde bildiğimiz klasik sql sorguları yani select,update.. vb. bulunmamaktadır. Bu sayede ORM ile yapmış olduğumuz
kodlama tüm veritabanı sistemlerinde geçerli olur. Laravel üerinde kullandığımız Model yapımız ise ORM ile yaptığımız işlermleri
kapsamaktadır.


  • Model dosyamızı oluşturmak için php artisan make:model Kullanici yazarız bu sayede default olarak Kullanicis
    tablosunda işlem yapacak olan Model dosyamız /app/Http/Kullanici.php şeklinde oluşur.

  • Ayrıca Model dosyamızı oluşturuken aynı zamanda migration dosyamızıda oluşturan bir kod vardır.
    php artisan make:kullanici -m bu kod sayesinde Model dosyamız /app/Http/Kullanici.php
    dosya youlunda oluşurken aynı zamanda bu Model dosyamızın işlem göreceği tablo olan Kullanicis tablosunun
    özelliklerini ve sütun isimlerini belirtebileceğimiz migration dosyamız ise /database/migrations/ dizini
    altında oluşur. Bu durumda önce gidip migration dosyamızı kullanarak 2.1 başlığı altında anlattığım Migration Kullanım Aşamalarını
    takip ederek database üzerine tablomuzu oluşturmalıyız. Dilersek default olarak gelen kullanicis tablosu ismini migration dosyamız içerisinden
    istediğimiz şekilde değiştirebiliriz. Eğer Tablo ismini değiştirdik ise ozaman Model dosyamız içerisinde bulunan class
    içerisine yeni tablo ismimizi tanıtmalıyız bu tanıtımı ise protected $table = “kullanicilar”; yazarak yapabiliriz.
    Ben bu kodu yazarak Model dosyamın artık kullanicilar tablosunda işlem yapmasını istediğimi belirtiyorum.


  • ORM Sorgu örneklerini https://github.com/ofke-yazilim/laravel-proje/blob/master/app/Http/Controllers/newcontroller.php dosyasında index fonksiyonu
    içerisinde gerçekletirdim. Daha önce Route dosyam içerisinde 66. satırdan sonra query builder örnekleri yapmıştım bu
    örnekler içerisinde kullandığım methodlar ORM işlemleri için de geçerlidir.


    Örnek Query Builder Methodları için : https://laravel.com/docs/5.5/queries adresini ziyaret ediniz.

2.5 Eloquent: Relationships Kullanımı




Relationships : Sql sorgularında yapmış olduğumuz join işlemlerinin ORM üzerindeki karşılığıdır. Yani tablolar arası ilişkileri
temsil ederler.

2.5.1 One To One Relationships


2.5.2 One To Many Relationships




Örneğin: Kullanıcıları tutan ve bu kullanıcılara ait
makaleleri tutan iki tablomuz olsun bir kullanıcının
bir çok makalesi olabilir. Bu sebeple bu iki tablo arasında
One To Many ilişkisi vardır.



2.5.3 Many To Many Relationships




Örneğin : Ürünler tablomuz olsun ürünler tablomuz ve kullanıcı tablomuz arasında ilşki kurarken şöyle bir durum oluşur. Bir ürünü bir çok kullanıcı alabilir aynı zamanda
bir kullanıcı bir çok ürün almış olabilir. İşte bu ilişki sitline Many To Many Relationships adı verilmektedir.




  • Öncelikle Urunler modeli ve urunler tablosunu oluşturmamızı sağlaycak urunler migration dosyası oluşturulur.


  • Elimizde bulunan kullanicilar ve urunler tabloları arasında bağlantı sağlayabilemek için bir bağlantı tablosu oluşturuyoruz.
    Bu tabloyu oluşturmak için öncelikle özelliklerini girebileceğimiz migration dosyasını oluşturalım php artisan make:migration kullanici_urunler_baglanti —create=urun_kullanici_baglanti
    Oluşturmak istediğimiz urun_kullanici_baglanti tablosuna ait sütun özelliklerini migration dosyamızda tanımlayarak (tanımladığımız sütun özellikleri ise
    ürün id değerini tutan urun_id ve kullanıcı id değerini tutan kullanici_id) php artisan migrate yazıyor ve tablomuzu oluşturuyoruz.
    yazarak tablomuzu database içerisinde oluşturuyoruz.


  • Artık kullanıcılar ürün aldıklarında aldıkları bu ürüne ait urun_id ve kullanıcıya ait kullanici_id değerleri birlikte bu bağlantı tablosuna eklenmeli.


  • Many To Many Relationships ilişkisinin Model dosyları üzerinde nasıl kullanıldığını görmek için https://github.com/ofke-yazilim/laravel-proje/blob/master/app/kullanici.php ve
    https://github.com/ofke-yazilim/laravel-proje/blob/master/app/Urun.php dosyalarını inceleyebilirsiniz.


  • Controller dosyamız içerisindeki örnekler için https://github.com/ofke-yazilim/laravel-proje/blob/master/app/Http/Controllers/newcontroller.php dosyasında
    index methodu içerisinde 76. satırdan itibaren inceleyebilirsiniz.


2.5.3 Has Many Through Relationships




Elimizde üç tablomuz bulunsun bu üç tablodan birini bağlantı tablosu gibi kullanarak diğer tablolardaki
verilere ulaşmamızı sağlayan ilişki türüne Has Many Through denir. Örneğin elimizde image,kullanici ve
makale tabloları mevcut olsun makaleyi yazan kullanıcının image blgisine ulaşabilmek için, image ve makale
tabloları arasında kullanıcı tablosunu bağlantı tablosu olarak kullanırız işte bu ilişki yöntemi has many through
diye adlandırılır. Bu örnekte makale tablosu içerisinde bulunanan kullanici_id ile kullanici tablosunda bulunanan
id değeri eşleştirilir. Daha sonra Kullanici tablosu üzerinde bulunan image_id değeri ile image tablosunda bulunan
id değeri eşleştirilerek sonuçlar alınır.


2.6 Eloquent: Polymorphic Relationships Kullanımı




Polymorphic İlişkinin ne olduğunu şöyle bir örnek ile açıklayabilirim: Bizim Makale ve Urun tablolarımız olduğunu düşünelim.
Makale ve ürünlerimize ait resimleri tek bir tablo içerisinde tuttuğumuzu ve bu tablonun isminin ise resimler tablosu olduğunu varsayalım.
Resimler tablosu ile Makale ve Urun tabloları arasında olab bu ilişki türüne Polymorphic ilişki denir.


Ayrıntılı İncelemek İçin : https://laravel.com/docs/5.5/eloquent-relationships#polymorphic-relations



2.6.1 One To Many Polymorphic Relationships Kullanımı



  • Önce Makale ve ürün resimlerinin tutulacağı tabloyu ve Orm işlemlerimizi yapacağımız Model dosyamızı oluşturalım.
    Tablomuzun sütun özelliklerini tanımlayacağımız Migration dosyamızı ve Orm işlemleri için kullnacağımız model dosyamızı
    oluşturmak için terminal ekranımıza php artisan make:model Resim -m kodunu yazıyoruz.


  • Resimler için oluşturmuş olduğumuz Migration dosyasını açarak sütun özelliklerini tanımlıyoruz. Bu tabloda Polymorphic ilişki için iki önemli
    sütun tanımlamalıyız bu sütunlardan biri {Senin Belirleyeceğin Bir Değer}_id ve {Senin Belirleyeceğin Bir Değer}_type şeklinde olmalıdır(Örnek : image_id,image_type).
    Diğer sütunları istediğin gibi ayarlayabilirsin.

    Örnek Kullanım : https://github.com/ofke-yazilim/laravel-proje/blob/master/database/migrations/2017_12_14_063050_create_resims_table.php


  • Örnek kullanımdan da gördüğünüz şekilde tanımlamalar yapıldıktan sonra php artisan migrate
    yazılarak database üzerinde resimler tablomuz oluşturulur.


  • Resimler Tablomuz üzerinde database işlmelerini sağlaycak olan Resim Adındaki model dosyamız açılarak resimler tablosu model dosyamıza tanıtılır.

    Model Dosyası : https://github.com/ofke-yazilim/laravel-proje/blob/master/app/Resim.php


  • Resimler tablomuzdan örneğin Makalelerimize ait resimleri alabilmek için kurmuş olduğumuz Polymorphic Bağlantı örneği için https://github.com/ofke-yazilim/laravel-proje/blob/master/app/Resim.php
    adresi üzerindeki model dosyamızı inceleyebilirsiniz.


  • One To Many Polomorfik İlişkisi için Controller dosyası üzerinde yapılan örneği : https://github.com/ofke-yazilim/laravel-proje/blob/master/app/Http/Controllers/newcontroller.php
    dosyası 85. satırdan itibaren inceleyebilirsin.

2.7 Laravel 5.4 PHPMailler Kurulum ve Kullanımı



  • Öncelikle terminal ekranında projemizin bulunduğu dosya dizini içerisinde composer require phpmailer/phpmailerkodunu çalıştırıyoruz. Composer kullanarak phpmailler sınıfını projemize dahil etmiş olduk.


  • Daha sonra Mail gönderimi yapcağımız controller dosyası içerisinde en üst kısma use PHPMailer\PHPMailer; yazarak projemize PHPMailler sınıfını dahil ediyoruz.


  • Örnek Gönderim kodları için : https://github.com/ofke-yazilim/laravel-proje/blob/master/phpmailler.txt adresini inceleyebilirsiniz.

2.8 Laravel 5.4 Middleware Kullanımı



  • Middleware yapısını ara katman olarak düşünebiliriz. Sayfa üzerinde işlemler yapmadan önce gerçekleştireceğimiz işlemler için kullanabiliriz. Örneğin Kullanıcı girişi yapılmış mı ya da kullanıcının ilgili sayfaya erişmeye izni var mı gibi kontroller sağlayabiliriz. Fakat ben kullanıcıların girdiği ilgili sayfa üzerinde log bilgisinin alınması işlemini gerçekledim.


  • Öncelikle Log kayıtlarımı tutabileceğim bir model ve migration oluşturuyorum. Projemin bulunduğu ilgili dizinde php artisan make:model Log -m kodunu çalıştırarak Log Adında bir model sınıfı ve logs adında tablomu oluşturacağım migration dosyam oluşmuş oldu. Migration dosyamı açarak sütun tanımlarımı yapıyorum ardından php artisan migrate kodunu çalıştırarak ilgili log tablosunu oluşturuyorum.


  • Log Model sınıfını açarak kayıt işlemlerini yapacağım static fonksiyonumu tanımlıyorum.


  • Ardından Middleware oluşturmak için php artisan make:middleware LogActivity yazarak LogActivity adında bir middleware oluşturuyorum middleware dosyasını açarak handle fonksiyonu içerisinde dilediğim işlemleri gerçekleyebiliyorum.


  • Son olarak app klasörü içerisinde kernel.php dosyasını açarak $middleware içerisine ‘LogActivity’ => \App\Http\Middleware\LogActivity::class, şeklinde middlewaretanımlamamızı yapıyoruz. Artık middleware kullanılmaya hazır.

Composer Kullanarak Yükleme Yapılamaz ise

  1. rm -rf vendor/ composer.lock
  2. composer install --no-dev
  3. composer update --no-dev