PHP'de MVC'de Rotalarda Parametre Kullanımı
Açıklananları daha gerçekçi bir örnek üzerinde
görelim. Kontrolcümüz PageController
bir sayfa dizisi içersin (bu veriler model
tarafından sağlanmalıdır, ancak henüz modelleri
incelemedik, bu yüzden veriler şimdilik
kontrolcüde dursun):
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
private $pages;
public function __construct()
{
$this->pages = [
1 => 'page 1',
2 => 'page 2',
3 => 'page 3',
];
}
}
?>
show adlı bir işlem yapalım, bu işlem
belirli bir numaraya (id) sahip sayfayı
ekrana yazdırsın:
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
private $pages;
public function __construct()
{
$this->pages = [
1 => 'page 1',
2 => 'page 2',
3 => 'page 3',
];
}
public function show()
{
// burada belirli bir numaralı sayfayı yazdıracağız
}
}
?>
/page/1/ adresine erişildiğinde
ilk sayfanın metni yazdırılsın,
/page/2/ adresine erişildiğinde -
ikinci sayfanın metni yazdırılsın ve böyle
devam etsin. İlgili rotayı yapalım:
<?php
use \Core\Route;
return [
new Route('/page/:id/', 'page', 'show'),
];
?>
Açıklanan show metodunu uygulayalım:
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
private $pages;
public function __construct()
{
$this->pages = [
1 => 'page 1',
2 => 'page 2',
3 => 'page 3',
];
}
public function show($params)
{
echo $this->pages[ $params['id'] ]; // numaraya göre sayfayı yazdırıyoruz
}
}
?>
Aşağıdaki diziyi içeren UserController
kontrolcüsünü uygulayın:
<?php
$this->users = [
1 => ['name'=>'user1', 'age'=>'23', 'salary' => 1000],
2 => ['name'=>'user2', 'age'=>'24', 'salary' => 2000],
3 => ['name'=>'user3', 'age'=>'25', 'salary' => 3000],
4 => ['name'=>'user4', 'age'=>'26', 'salary' => 4000],
5 => ['name'=>'user5', 'age'=>'27', 'salary' => 5000],
];
?>
UserController kontrolcüsünde,
belirli bir id'ye göre kullanıcıyı
yazdıracak bir show işlemi yapın.
Bu işlemin aşağıdaki formattaki adreste
mevcut olmasını sağlayın:
/user/:id/.
UserController kontrolcüsünde,
belirtilen kullanıcının adını veya yaşını
yazdıracak bir info işlemi yapın.
Bu işlemin aşağıdaki formattaki adreste
mevcut olmasını sağlayın: /user/:id/:key/,
burada key parametresi 'name',
'age' veya 'salary' değerine
sahip olacak.
UserController kontrolcüsünde,
tüm kullanıcıların listesini ekrana
yazdıracak bir all işlemi yapın.
Bu işlemin aşağıdaki formattaki adreste
mevcut olmasını sağlayın:
/user/all/ (burada hiçbir parametre
olmayacak).
UserController kontrolcüsünde,
ilk N kullanıcının listesini ekrana
yazdıracak bir first işlemi yapın.
Bu işlemin aşağıdaki formattaki adreste
mevcut olmasını sağlayın: /user/first/:n/,
burada parametre, ekrana yazdırılacak
kullanıcı sayısını belirtecek.