Codeigniter 4 sürümünün stabil versiyonu çıkmış durumda.Artık codeigniter modern framework statüsüne erişmiş hale geldi.Güncel composerlar ile birlikte kullanabilir ve kurulum yapabilirsiniz.Codeigniter 4 sürümüne aşağıda ki indirme linkinden erişebilirsiniz.
Codeigniter 4 indir: https://codeigniter.com/download
Codeigniter 4 Dökümantasyon: https://codeigniter4.github.io/userguide/
Codeigniter 4 ile İlk Uygulama
İlk önce Application/Controllers klasörümüze kontrol dosyasını açıyoruz.İsmini Pages.php yapıyoruz.
<?php namespace App\Controllers;
use CodeIgniter\Controller;
class Pages extends Controller {
public function index()
{
return view('welcome_message');
}
public function showme($page = 'home')
{
if ( ! is_file(APPPATH.'/Views/pages/'.$page.'.php'))
{
// Whoops, we don't have a page for that!
throw new \CodeIgniter\Exceptions\PageNotFoundException($page);
}
$data['title'] = ucfirst($page); // Capitalize the first letter
echo view('templates/header', $data);
echo view('pages/'.$page, $data);
echo view('templates/footer', $data);
}
app/Views/templates/ klasörüne header.php isminde dosya açıyoruz ve içine aşağıda ki kodu ekliyoruz.
<!doctype html>
<html>
<head>
<title>CodeIgniter Tutorial</title>
</head>
<body>
<h1><?= $title; ?></h1>
<em>© 2019</em>
</body>
</html>
config/route.php dosyamıza ise aşağıda ki kodları ekliyoruz.
$routes->get('/', 'Home::index');
$routes->get('(:any)', 'Pages::showme/$1');
Ve ilk uygulamamız hazır.Uygulamamıza http://localhost/codeigniter/Home şeklinde erişebilirsiniz.
Codeigniter 4 ile Basit Haber Script Uygulaması
Aşağıda ki sql kodunu codeigniter veritabanımızda çalıştırıyoruz.
CREATE TABLE news (
id int(11) NOT NULL AUTO_INCREMENT,
title varchar(128) NOT NULL,
slug varchar(128) NOT NULL,
body text NOT NULL,
PRIMARY KEY (id),
KEY slug (slug)
);
INSERT INTO news VALUES
(1,'Elvis sighted','elvis-sighted','Elvis was sighted at the Podunk internet cafe. It looked like he was writing a CodeIgniter app.'),
(2,'Say it isn\'t so!','say-it-isnt-so','Scientists conclude that some programmers have a sense of humor.'),
(3,'Caffeination, Yes!','caffeination-yes','World\'s largest coffee shop open onsite nested coffee shop for staff only.');
Daha sonra app/models klasöründe NewsModel.php adında model dosyamızı oluşturarak aşağıda ki kodu içine ekliyoruz.
<?php namespace App\Models;
use CodeIgniter\Model;
class NewsModel extends Model
{
protected $table = 'news';
}
public function getNews($slug = false)
{
if ($slug === false)
{
return $this->findAll();
}
return $this->asArray()
->where(['slug' => $slug])
->first();
}
app/Controllers klasörüne girip News.php adında kontrol dosyası oluşturuyoruz ve aşağıda ki kodu içine ekliyoruz.
<?php namespace App\Controllers;
use App\Models\NewsModel;
use CodeIgniter\Controller;
class News extends Controller
{
public function index()
{
$model = new NewsModel();
$data = [
'news' => $model->getNews(),
'title' => 'News archive',
];
echo view('templates/header', $data);
echo view('news/overview', $data);
echo view('templates/footer');
}
public function view($slug = NULL)
{
$model = new NewsModel();
$data['news'] = $model->getNews($slug);
if (empty($data['news']))
{
throw new \CodeIgniter\Exceptions\PageNotFoundException('Cannot find the news item: '. $slug);
}
$data['title'] = $data['news']['title'];
echo view('templates/header', $data);
echo view('news/view', $data);
echo view('templates/footer');
}
}
Son olarak app/Views/ klasörüne news adında yeni bir klasör oluşturup içine overview.php isimli bir dosya oluşturuyoruz ve içine aşağıda ki kodu ekliyoruz.
<h2><?= $title ?></h2>
<?php if (! empty($news) && is_array($news)) : ?>
<?php foreach ($news as $news_item): ?>
<h3><?= $news_item['title'] ?></h3>
<div class="main">
<?= $news_item['body'] ?>
</div>
<p><a href="<?= '/news/'.$news_item['slug'] ?>">View article</a></p>
<?php endforeach; ?>
<?php else : ?>
<h3>No News</h3>
<p>Unable to find any news for you.</p>
<?php endif ?>
Yönlendirme için ise route.php dosyamıza aşağıda ki kodu ekliyoruz.
$routes->get('news/(:segment)', 'News::view/$1');
$routes->get('news', 'News::index');
$routes->get('(:any)', 'Pages::showme/$1');
Uygulamamıza erişmek için localhost/codeigniter4/news adresine giriyoruz.