Postingan lainnya
Buku Ini Koding!
Baru!
Buku ini akan jadi teman perjalanan kamu belajar sampai dapat kerjaan di dunia programming!
Cara membuat class Requests mirip laravel di php native
hallo gan, saya udah mempelajari video tutorial di sekolah koding tentang mini-framework dan sedikit sedikit mau dikembangin buat keperluan saya. jadi saya mau ada class Request untuk ngambil data dari post. itu logikanya gimana ya ? biar bisa jadi parameter method dan di gunakan mirip laravel. kalau pertanyaan saya kurang berkenan mohon maaf saya pemula :D
6 Jawaban:
Hallo, apa ada yang bisa kasih pencerahan ?
kalau ada yang tau tolong kasih pencerahan ya... :D
bisa ambil data dari global variabel `$_SERVER`. Pada veriabel tsb terdapat banyak data yang dapat untuk membuat class request.
contoh di laravel ada
$method = $request->method();
if ($request->isMethod('post')) {
//
}
maka
Class Request{
private $server = [];
function __construct(){
$this->server = $_SERVER; // bisa juga pake dependency injection
}
//...
function method(){
return strtoupper($this->server['REQUEST_METHOD']);
}
function isMethod($method){
return $this->method() === strtoupper($method);
}
//...
}
Kalo ambil value dari input text nya gimana ya ? Kan kalo di laravel simple tinggal $request->name
public function __construct()
{
$this->server = $_SERVER;
if ($this->method() === 'POST') {
$input = $_POST;
} else {
$input = $_GET;
}
foreach ($input as $key => $value) {
$this->$key = $value;
}
}
kalau bingung dengan maksud $this->$key, bisa baca ini http://php.net/manual/en/language.variables.variable.php. $this->$key akan membuat property pada object, sesuai dengan input-name yang di input oleh user.
kalo inisialisasinya yang ini bukan gan ?
$method = $request->method();
if ($request->isMethod('post')) {
//
}
jadi kaya gini
public function store()
{
$method = $request->method();
if ($request->isMethod('post')) {
//
}
}
itu mungkin requestnya di taro di controller utama, soalnya kalo di parameter store nanti jadi nyari get kaya di video mini framework. apa bner atau bisa di ubah lagi gan ?