Turkish Tutorial of Codeigniter | PHP | Part 1 |

in #utopian-io8 years ago (edited)

Codeigniter
CodeIgniter is an Application Development Framework - a toolkit - for people who build web sites using PHP. Its goal is to enable you to develop projects much faster than you could if you were writing code from scratch, by providing a rich set of libraries for commonly needed tasks, as well as a simple interface and logical structure to access these libraries. CodeIgniter lets you creatively focus on your project by minimizing the amount of code needed for a given task.
Source



ci-logo-big.png
Resim Kaynak


Merhaba arkadaşlar bugün bir php frameworkü olan Codeigniter hakkında bir eğitim yapacağım.
Codeigniter'ın temiz ve geliştirilebilir bir kod yapısı var. Codeigniter için bir eğitim serisi hazırlamayı planlıyorum. Önceki eğitimlerden bildiğiniz gibi ben genelde örnekler üzerinden anlatım yapmayı seviyorum. Daha rahat anlaşıldığını düşünüyorum bu şekilde eğitimin bu yüzden Codeigniter eğitimindede bu şekilde devam edeceğim. Bu yazımızda temel Codeigniter nedir, içinde gelen klasörleri nelerdir, bu klasörler ne işe yararlar, MVC nedir, ne işe yarar, nasıl çalışır gibi genel anlatımları yapıp birde örnek bir uygulama yapmaya çalışacağım.


Linklerimiz
Github
Codeigniter Website
Proje Dosyamız


Gerekenler

Orta derece kod ve algoritma bilgisi
Basit HTML CSS bilgisi
Basit derece PHP bilgisi
Basit derece Veritabanı bilgisi


Codeigniter Nedir?

Arkadaşlar yukarıdada bahsettiğim gibi Codeigniter bir php frameworküdür. İçinde biz yazılımcıların kullanması için yüzlerce açık kaynak kütüphane bulundurur. Bunun bize yararı kütüphanelerimizi projelerimize kolayca entegre edebilmemizdir. Bu şekilde çok daha hızlı, temiz ve güvenli kod yapısıyla kod yazabiliriz. Örneğin bir güvenlik işlemi yapacağımızda normalde bunun için 200 satır kod yazmamız gerekirken Codeigniter sayesinde 20 satır kodla bu problemi çözebiliriz. Codeigniter kullanımı aynı zamanda projemizin geliştirilmesi içinde kolaylık sağlar örnek bir proje yazdığımızda bunu açık kaynak kodlu olarak geliştirilmesi için paylaştığımızda. Projemizi gören diğer yazılımcılar kodumuzu anlamayabilir veya çok karışık bulabilir. Ama Codeigniter kullanıyorsak başka bir Codeigniter kullanan yazılımcı projemizi gördüğünde çok kolayca tanıyabilir ve üstünde düzenlemeler yapabilir. Codeigniter MVC altyapısıyla çalışır bu en büyük artılarından biridir. MVC sayesinde esneklik, temiz ve düzenli kod yazmamızı sağlar.

MVC Nedir?

1.png

Arkadaşlar MVC'nin açılımı Model, View, Controller şeklindedir. Yani 3 maddenin baş harflerinden oluşan bir terimdir. MVC'yi anlatabilmek için Model, View, Controller'ı madde madde incelememiz gerekir.

Model

Tüm veritabanı ve veri işlemlerimiz model üstünde tutulur. Controller tarafından gelen istekler burada çalıştırılıp geri döndürülür. Örnek olarak bir blog uygulaması yazacağımız zaman yazılarımızı tutacak bölüm blog bölümüdür. Yazılarımızı ekleme,silme,düzenleme işlemlerini model üzerinden yapabiliriz.

Controller

Arkadaşlar controller uygulamamızdaki kontrollerin yapıldığı bölümdür. Kısaca özetlememiz gerekirse controller bölümü uygulamamızın karar mekanizmasıdır. Belirlediğimiz kriterlere göre modelden hangi verileri alacağımızı veya hangi View'i göstereceğimizi burada tanımlarız.

View

Arkadaşlar view uygulamamızın kullanıcı tarafıdır. Yani kullanıcının görmesini istediğimiz bütün kodları buraya yazarız. Temamızın html,css vs dosyalarımızın bulunduğu bölümdür.

Evet arkadaşlar artık MVC dediğimizde kafanızda bir şema oluşuyor olmalı. Özet geçmemiz gerekirse sitenize bir ziyaretçi girer site controller'a gider. Controllerimiz gerekli kararları verir. Kullanıcı gösterilmesi gereken bilgileri modelden ister. Model bilgileri controller'a gönderir. Ve son olarak kontrollerimiz tüm bu bilgileri toplayıp view'imizde bizim istediğimiz kodladımız şekilde gösterir.
Bu yapı sayesinde karmaşık iç içe kodlamanın önüne geçerek hem esnek, kolay geliştirebilir bir uygulama yazılması sağlanmış olur.

Codeigniter Dosya Yapısı

Evet arkadaşlar Codeigniter'ı githubdan veya sitesinden indirdiğinizde sizi gerekli 3 dosya karşılar.
Bunlardan biri system klasörü, application klasörü, ve index.php dosyasıdır.

2.png

System klasörü

Codeigniter frameworkünün işlemesi için hazırlanmış bir klasördür. Bu klasör üzerinden CodeIgniter üzerinde geliştirme ve güncellemeler yapabilirsiniz.

3.png
core: Codeigniter çekirdek kodlarını içeren klasördür. Framework'ün temel görevlerini içerir.

database: Codeigniter'ın veritabanı işlemlerini yaptığı modeli içeren kısımdır.

fonts: Sistem fontlarını içerir.

helpers: Codeigniter'ın modeller oluşurmamıza yarayan yardımcı fonksiyonlarını içerir.

language: Sistemin dil dosyalarını içerir.

libraries: Sistemde kullanılan yardımcı kütüphaneleri içerir.

Application klasörü

Arkadaş uygulamamızı kodlayacağımız klasör burasıdır. Codeigniter'ı kullanarak hazırlayacağımız bütün uygulamaları bu klasör içinde hazırlayacağız.

4.png

cache: Uygulamamızın cache dosyaları burada tutulur.

config: Uygulamamızla alakalı konfigürasyonları yaptığımız klasördür.

controllers: Yukarıda mvc bölümde anlattığımız. Controller bölümüdür. Uygulamamızdaki tüm kontrolleri burada yazacağız.

core: Varsa uygulamamızın çekirdek kodlarının yazıldığı klasördür.

helpers: Uygulamamız için yardımcı fonksiyonlarımızı yazdığımız klasördür.

hooks: Uygulamızda Codeigniter'ın çekirdek koduna müdahele edebileceğimiz bölümdür.

language: Uygulamamızın dil dosyalarının bulunduğu klasördür.

libraries: Uygulamıza ek kütüphaneler ekleyebileceğimiz klasördür.

logs: Log kayıtlarını tutacağımız klasör.

models: Yukarıdaki mvc anlatımında anlattığım. Model bölümünün klasörüdür. Uygulamamızdaki tüm model işlemlerini burada yazacağız.

third-party: Üçüncü parti uygulamaları uygulamamıza entegre edebileceğimiz klasördür.

views: Yukarıdaki mvc anlatımında anlattığım. Views bölümünün klasörüdür. Uygulamamızdaki tüm view işlemlerini burada yazacağız.

index.php

Codeigniter Framework'ümüzün application ve system klasörlerinin belirtildiği genel hata ve yönlendirmelerin yazıldığı php dosyasıdır.

Evet arkadaşlar dosya yapımız ve ne işe yaradıkları hakkında anlattımız bu kadardı.


Codeigniter İlk Uygulama

Evet arkadaşlar MVC'nin Codeigniter framework'ümüzün yapısını genel olarak anlattığıma göre artık ilk uygulamamızı yapabiliriz.

Ben kodlamayı yaparken Notepad++ kullanacağım. Buda tamamen açık kaynaklı bir editördür.

Github
Website ve İndirme

Evet arkadaşlar öncelikle Notepad++ programımızı açıyoruz. Sol üst menüden klasorü çalışma alanı olarak aç alanına tıklıyoruz.

5.png

6.png

Gelen alandan Codeigniter Framework dosyalarımızın bulunduğu klasörü seçiyoruz. Tamam'a basıyoruz.

Evet arkadaşlar bu işlemden sonra sol tarafta çalışma yapacağımız klasör açılmış oluyor.

7.png

Şimdi arkadaşlar application klasörü içindeki controllers bölümüne gelin ve herşeyi silin.
Yine application klasörü içindeki models klasörümüzün içindeki herşeyide silebilirsiniz.
Ve son olarak yine application klasörü içindeki views klasörü içinde errors klasörü hariç herşeyi silin.
Errors klasörünü silmemizin nedeni eğer bir hata alırsak view'in neden hata verdiğini göstermesi için bıraktım ben. İsterseniz onuda silebilirsiniz.

Şimdi arkadaşlar Notepad++ programımız üzerinde üsteki menümüzden Dosya/ Yeni diyoruz.

8.png

Gördüğünüz gibi notepad++ bize yeni bir dosya oluşturuyoruz.
Şimdi öncelikle Controller'ımızı oluşturucağız. Bu dosyamız php olacak.

Welcome.php Controller

Kodlarımız şu şekilde:


<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Welcome extends CI_Controller {

public function index()
{
$this->load->model('denememodel');
$data['q'] = $this->denememodel->testfunc();
$data['title'] = "Codeigniter İlk Uygulama";
$this->load->view('denemeview',$data);
}
}


Arkadaşlar temel controller yapımız bu şekildedir. Kodlarımızı anlatmam gerekirse öncelikle
class bölümünde CI_Controller'dan türemiş Welcome adında bir class oluşturuyoruz.

Not: Welcome class adını ve dosya adını değiştirmek için application klasörü altındaki config klasörünün içindeki routes.php bölümündeki default_controller bölümünü değiştirmeniz yeterli.

Sonra arkadaşlar index adında bir public fonksiyon oluşturuyoruz. Bu fonksiyonun içinde
$this->load->model('denememodel'); diyerek modelimiz için oluşturucağımız modelimizi çağırıyoruz.
$data['q'] = $this->denememodel->testfunc(); Data adında bir dizi oluşturuyoruz bu dizide q adında bir veri oluşturuyoruz. Bu veriyi denememodelimizin test fonksiyonundan çekiyoruz.
$data['title'] = "Codeigniter İlk Uygulama"; Data dizimize title adında bir veri oluşturuyoruz. Bunu controllerımızda giriyoruz.

$this->load->view('denemeview',$data); Ve son olarak denemeview adlı view'imizi, data dizimizle birlikte gösteriyoruz.

Not:Arkadaşlar kodları şuan tam olarak anlamayabilirsiniz. MVC sistemine bir bütün olarak bakmanız gerekmekte yani bütün kodları yazdıktan sonra kodların anlamına tekrar dönmenizi öneririm.

9.png

Son olarak arkadaşlar bu yazdığımız kodlarımızı application klasörü altındaki controllers klasörümüze Welcome.php olarak kaydediyoruz. Notepad++ üzerinde CTRL+S yapıp veya Dosya kaydet/ Farklı kaydet diyerek dosyamızı kaydedeceğimiz yeri yani application klasörü altındaki controllers klasörünü seçerek kaydetmeniz yeterli.

10.png

denememodel.php Model

Kodlarımız şu şekilde:


<?php
class Denememodel extends CI_Model {
function __construct()
{
parent::__construct();
}
function testfunc()
{
$name = "Pars";
return $name;
}
}
?>

Arkadaşlar temel model yapımız bu şekildedir. Kodlarımızı anlatmam gerekirse öncelikle
class bölümünde CI_Model'den türemiş Denememodel adında bir class oluşturuyoruz.Constructerımızı fonksiyon olarak ekliyoruz. Sonra testfunc adında basit bir fonksiyon oluşturuyoruz. Name adlı değişkeni döndürüyor.

Evet arkadaşlar model dosyamızıda denememodel.php şeklinde application klasörü altındaki models klasörümüze kaydediyoruz.

11.png


denemeview.php View

Evet arkadaşlar controllerımız hazır, modelimiz hazır son olarak bu yaptığımız işlemleri bir yerde göstermemiz gerekiyor. Bunun için viewimizi kullanıyoruz.
Kodlarımız şu şekilde:


<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="utf-8">
<title><?=$title;?></title>
</head>
<body>
<div id="container">
<h1><?=$title;?></h1>
<div id="body">
<?=$q;?>
</div>
</div>
</body>
</html>

Arkadaşlar view'imizin şuan aslında sadece HTML kodlarından oluşmaktadır. Sadece yukarıda gördüğünüz gibi title ve h1 etiketinde $title verimizi gösterdim. Ve body içinde ise $q verimizi gösterdim. Bunları yukarda tanımlamış ve modelde oluşturmuştuk. Bu kısımda sadece nasıl göstereceğimizi ve nerde göstereciğimizi HTML kodlarıyla tanımlıyoruz.

Evet arkadaşlar view dosyamızıda denemeview.php şeklinde application klasörü altındaki views klasörümüze kaydediyoruz.

12.png


Evet arkadaşlar ilk uygulamımızda bu kadardı kodların tamamını birleştirince MVC ve Codeigniter Framework'ümüzün mantığını anlayacağınızı düşünüyorum.

Not: PHP sunucu tabanlı bir dildir. Bilgisayarınızda çalıştırabilmek için localhost kurulumuna ihtiyacınız vardır. Xampp kullanarak kolayca bilgisayarına localhost kurulumu yapabilirsiniz. Apache ve kullanıcaksanız MySQL'i çalıştırmanız yeterli. Veya dosyalarını sunucunuzdada deneyebilirsiniz.

Uygulamamızın Ekran Görüntüsü

13.png

Evet arkadaşlar Codeigniter PHP Framework ilk dersimiz bu kadardı okuduğunuz için teşekkürler. Diğer derslerde görüşmek üzere.



Posted on Utopian.io - Rewarding Open Source Contributors

Sort:  

Güzel bir seriye başlamışsınız, takipteyim ☺️ Teşekkürler detaylı ve anlaşılır anlatımınız için.

Ben teşekkür ederim :) Takibiniz için

Thank you for the contribution. It has been approved.

You can contact us on Discord.
[utopian-moderator]

Thank you very much :)

Hey @pars11 I am @utopian-io. I have just upvoted you!

Achievements

  • You have less than 500 followers. Just gave you a gift to help you succeed!
  • You are generating more rewards than average for this category. Super!;)
  • Seems like you contribute quite often. AMAZING!

Suggestions

  • Contribute more often to get higher and higher rewards. I wish to see you often!
  • Work on your followers to increase the votes/rewards. I follow what humans do and my vote is mainly based on that. Good luck!

Get Noticed!

  • Did you know project owners can manually vote with their own voting power or by voting power delegated to their projects? Ask the project owner to review your contributions!

Community-Driven Witness!

I am the first and only Steem Community-Driven Witness. Participate on Discord. Lets GROW TOGETHER!

mooncryption-utopian-witness-gif

Up-vote this comment to grow my power and help Open Source contributions like this one. Want to chat? Join me on Discord https://discord.gg/Pc8HG9x

Coin Marketplace

STEEM 0.04
TRX 0.33
JST 0.094
BTC 63873.65
ETH 1795.55
USDT 1.00
SBD 0.39