Projeye hazırlık

1 –ÇERÇEVE (FRAMEWORK) NEDİR?

Framework kavramsal bir yapı olup, program yapılarına faydalı olması için destek veya rehberlik amacı ile tasarlanmıştır. Frameworkler, bulundurduğu hazır kütüphaneleri ile yazılımcılara kolaylık sağlamanın yanında sundukları yapı ile (MVC gibi) yazılan kodların okunabilirliğini ve düzenini de kolaylaştırmaktadır. Bunların yanında tekrar kullanabilen code parçaları, daha az bug, daha iyi test ve debug ortamı da sunar.

1-a Web Çerçevesi – Web Uygulamaları Çerçevesi – Laravel Nedir?

Web uygulamaları çerçeveleri, web servisler, web kaynakları ve web API leri kapsayarak web uygulamaları geliştirmelerini desteklemek için tasarlanmıştır. Laravel, web uygulamalarını hızlı ve basit bir şekilde çıkarılmasını sağlayarak, mevcut web uygulamaları çerçeveleri arasından en çok kullanılan, açık kaynak kodlu modern bir çerçevedir. Diğer bir deyişle uygulaması basit, öğrenmesi kolay ve hızlı uygulama geliştirmeyi desteklemesi ile ünlü bir çerçevedir.

2 – NEDEN LARAVEL EN İYİ ÇERÇEVE?

Laravel içinde bulundurduğu özellikler sayesinde hızlı web uygulamalarını geliştirmeye yardımcı olmaktadır. Bu özelliklerden bazıları aşağıda açıklamaları ile birlikte verilmiştir.

2-a Routing System : Tarayıcınızda url kısmında gördüğünüz kısımdır. Tüm Laravel route’ları 3. bölümde görebileceğiniz routes/web.php dosyasında tanımlanır. Bu dosyalar otomatik olarak çerçeve tarafından yüklenir. Routes klasöründe tanımlı 2 tane dosya bulunmaktadır. Bunlar web ve api.php’dir. Web.php dosyasındanda web arayüzü routeları tanımlanmaktadır. Api.php dosyasında ise api urlleri bulunmaktadır. Dersimizde wep.php dosyasında url lerimizi tanımlayacağız. Basit bir route oluşturmak gerekirse;

Route::get('/user', '[email protected]'); => http://your-app.test/user

Diğer route metodları post, delete ve put.

2-b Unit Testing: PHPUnit hali hazırda gömülü bir şekilde bir Laravel projesinde gelmektedir. phpunit.xml dosyası uygulamanızda kuruludur.

2-c Artisan Console: Artisan Laravel içerisindeki bir komut satırı arayüzüdür. Birçok komutu barındır. Bu komutlardan bazılarını 5. bölümde bulabilirsiniz.

2-d Blade Templating Engine

2-e Composer: Uygulamada kullanmak istediğimiz üçüncü parti uygulamaların yönetimini kolaylaştıran bir araçtır. Kısacası ihtiyacınız olduğu kütüphaneleri yüklemesini sağlar.

2-f MVC Desteği: MVC model-view-controller’dan oluşan bir design patterndır.

3- LARAVEL FİLE YAPISI

phpwomen” adı altında yeni bir proje oluşturdum ve dosya dizini aşağıdaki gibidir.

app dosyası uygulamamızın core codelarını tutar. Core codelara örnek olarak events, exceptions ve middleware tanımlamaları olabilir. MVC yapısındaki controller ve model de buraya aittir.

resources dosyası tüm view’ler ve aynı zamanda un-compiled assests yani javascript dosyalarını tutar.

public dosyası uygulamanın giriş noktası olan index.php’yi barındırır. Aynı zamanda assetsler mesela resimler, javascript ve css dosyalarını tutar.

routes dosyası tüm route tanımlamalarını barındırır.

database dosyası database migrations, model factories ve seeds barındırır.

4. PHP ARTİSAN KOMUTLAR

Eğitim sırasında kullanılacak olan bazı artisan komutları aşağıda listelenmiştir.

php artisan list: mevcut tüm artisan komutlarını listeler,

php artisan tinker: tinker tüm Laravel projesi ile etkileşime geçmemizi sağlar. Bunlar arasında the Eloquent ORM, jobs, events olabilir.

php artisan route list: Kayıtlı tüm routeları listeler.

php artisan make:migration create_tutorials_table : Yeni bir migration dosyası oluşturup, bunu database/migrations altına koyar. Aşağıdaki resim bu migration dosyasının nasıl olduğuna bir örnektir.

php artisan migrate: migration dosyasını çalıştırmaya yarar.

Bir migration classı 2 tane method sahiptir; up ve down. up method yeni tablolar, sütunlar, indexler eklemek için kullanılır.

down methodu da up methodun tersidir.

Aşağıdaki örnekte tutorial tablosuna id,name ve timestamp sütunlarını ekliyoruz.

public function up() { Schema::create(tutorials, function (Blueprint $table) { $table->increments('id'); $table->string('name'); $table->timestamps(); }); } public function down() { Schema::drop(tutorials); }