Untuk proyek kecil dan sederhana, terdiri dari:
Sekeleton MVC menggunakan arsitektur MVC seperti yang disarankan oleh nama. MVC adalah singkatan dari Model-View-Controller. Model-view-controller-Wikipedia
Model:
The central component of the pattern. It is the application's dynamic data structure, independent of the user interface. It directly manages the data, logic and rules of the application.
View:
Any representation of information such as a chart, diagram or table. Multiple views of the same information are possible, such as a bar chart for management and a tabular view for accountants.
Controller:
Accepts input and converts it to commands for the model or view.
example.com/shop/show-shoes/index.phpindex.php Files memerlukan AutOLoad (komposer) dan pembantu global (lebih lanjut tentang ini nanti).index.php sendResponse () dipanggil pada contoh $ aplikasi yang mengirimkan header dan kode status yang sesuai bersama dengan konten yang dikirim kembali ke browser.Sekarang Anda memahami bagaimana kerangka kerja menangani semua ini. Di bawah ini adalah dokumentasi untuk setiap kelas dan beberapa contoh untuk memulai pengembangan.
YourAppApp : Kode AndaControllers : Semua pengontrolModel : semua modelView : Semua tampilanConfig.php : kelas konfigurasi penggunaCore : Kode Kerangkapublic : Terkena Webindex.php : titik awal aplikasi.htaccess : rerout semua permintaan ke index.phpassets : Semua aset statis seperti CSS/JS tinggal di sinistorage : Tampilan yang dikompilasi, dokumen yang diunggah, dll.vendor : Unduhan Komposer dari Perpustakaan yang Diperlukan Meskipun sebagian besar kerangka kerja mengikuti konfigurasi konfigurasi konfigurasi diperlukan untuk DB Params dan Path View, dll.
Konfigurasi pengguna hidup di dalam direktori aplikasi Anda di kelas konfigurasi. Membuka file ini Anda melihat kelas konfigurasi memperluas Baseconfig ( core config) yang didefinisikan secara internal dalam kerangka. Sebagian besar dari semua konfigurasi adalah const parmas beberapa mungkin metode statis.
Kelas ini didokumentasikan melalui komentar jadi periksa dan Anda dapat mengetahui semua konfigurasi sendiri.
Untuk konvensi perutean digunakan melalui konfigurasi untuk mis:.
Bayangkan ingin menunjukkan posting rute 3 ID akan terlihat seperti ini
example.com/user-post/show-photos/3/paris
Contoh di atas memiliki
Jadi di atas kelas pengontrol akan terlihat seperti
<?php
namespace App Controllers ;
use Core Request ;
class UserPost {
public function showPhotos ( Request $ request , $ id , $ location ) {
# $id= 3 and $location= paris
return view ( ' photos.show ' , [
' id ' => $ id ,
' location ' => ' paris '
]);
}
}Tetapi Anda mungkin bertanya bagaimana dengan /, /tentang, dll. Rute?
Rute -rute ini secara otomatis dialihkan ke default_controller (dapat diubah di konfigurasi) default adalah Sitecontroller dan / Action adalah default ke metode indeks yang dapat diubah dalam konfigurasi juga.
Anda juga dapat melihat objek CoreRequest yang disahkan sebagai argumen pertama selalu. Ini berisi berbagai pembantu untuk permintaan (info lebih lanjut di bagian permintaan).
Permintaan diperlakukan sebagai objek. Ini akan diteruskan oleh Deafault ke metode setiap pengontrol sebagai argumen pertama dan params lainnya akan dilewati setelahnya dalam urutan. mantan:
Untuk URL example.com/user-post/show-photos/3/paris
<?php
namespace App Controllers ;
use Core Request ;
class UserPost {
public function showPhotos ( Request $ request , $ id , $ location ) {
# $id= 3 and $location= paris
return view ( ' photos.show ' , [
' id ' => $ id ,
' location ' => ' paris '
]);
}
}Berikut adalah beberapa metode praktis yang disediakan oleh objek permintaan kepada Anda.
/* Check Method of request */
$ request -> isGet ();
$ request -> isPost ();
/*
How to get superglobals
These methods if provided returns specific field or entire array if no parameters are passed.
If field does not exits null is returned
*/
$ request -> query ( ' field ' ); // For GET
$ request -> input ( ' field ' ); // For POST
$ request -> server ( ' field ' ); // For SERVER
$ request -> files ( ' field ' ); // For FILES
$ request -> all (); // For FILES and POST merged Respons yang perlu dikirim ke browser dapat dicapai
view ( ' viewpath ' , $ data = []); // viewpath ex. phtots.show for Views/photos/show.php
view ([ ' header ' , ' content1 ' , ' content2 ' , ' footer ' ], $ data = []); // array alternative
json ( $ data = [], $ options , $ depth = 512 ); // Same as setting header("Contetnt-Type: text/json"); and using json_encode() Validasi terinspirasi oleh Laravel dan beberapa aturan dasar dan paling banyak digunakan disediakan.
$ errorMsgs = Core Validator:: validate ( $ request -> all (), [
" name " => [ " required " , " max:30 " ],
" mobile " => [ " required " , " digits:10 " ],
" photo " => [ " required " , " image:image/jpeg " , " max:100 " ],
]);Pesan yang dihasilkan oleh kerangka kerja sederhana dan Anda dapat menyesuaikannya di dalam file konfigurasi. Mantan.
public static function getMessage ( $ rule , $ field , $ params , $ messages = [])
{
$ messages = [
" required " => " Hmm... plz get the $ field filled :) "
];
return parent :: getMessage ( $ rule , $ field , $ params , $ messages );
}Dalam contoh di atas, pesan yang diperlukan akan menjadi kustom.
Gagal jika bidang dibiarkan kosong sesuai fungsi php kosong ().
Harus menjadi nilai string.
Harus nilai string numerik atau numerik dengan ukuran yang diberikan, jika ukuran tidak diberikan cukup periksa sebagai nilai numerik
Benar untuk ya, tidak, ya, tidak, benar, salah, 0, 1 jika tidak salah
Data permintaan harus berisi bidang dengan nama yang sama dengan _Confirmation Suffix. Contoh: Jika digunakan pada kata sandi, itu akan memeriksa bidang kata sandi_confirmation
Apakah itu id email yang valid atau tidak.
Periksa apakah itu file yang diunggah atau tidak
Periksa apakah itu gambar yang valid atau tidak. Jenis yang Diizinkan Secara Default: Image/JPEG, Image/GIF, Image/PNG, Image/Webp, Image/SVG+XML, Image/BMP.
Apakah tanggal yang valid atau tidak melalui fungsi strtoTime ()
Periksa apakah kedua tanggal tersebut sama atau tidak
Periksa apakah tanggal pengguna datang setelah yang diberikan.
Periksa apakah tanggal pengguna datang sebelum yang diberikan.
Bidang di bawah validasi dan diberikan seseorang harus memiliki nilai yang berbeda.
Bidang di bawah validasi dan diberikan seseorang harus memiliki nilai yang sama.
Bidang di bawah validasi harus ada nol atau kosong.
Aturan ukuran maksimum. Untuk
Angka : Angka harus kurang dari atau sama dengan ukuran.
String : Panjang harus kurang dari atau sama dengan ukuran.
Array : Hitungan elemen harus kurang dari atau sama dengan ukurannya.
File yang diunggah : Ukuran file harus kurang dari atau sama dengan ukurannya.
Aturan ukuran minimum. Batasan Sama seperti Max: Ukuran Aturan.
Atur kredensial database Anda dan tipe DB dalam file config. Maka Anda selalu bisa mendapatkan koneksi dengan menelepon:
$ conn = Core Database:: getConnection (); // PDO instance Model adalah tempat bisnis Anda akan tinggal, yang juga mencakup logika terkait DB. Itu sebabnya beberapa metode praktis disediakan:
// suppose
class User extends Model { /* Empty */ }
$ user = new App Models User ();
$ user -> find ( $ id , columns = [ ' * ' ], $ fetchStyle = PDO :: FETCH_BOTH ); // Get single row
$ user -> all (columns = [ ' * ' ], $ fetchStyle = PDO :: FETCH_BOTH ); // get all rows
$ user -> insert ( $ data ); // As associative array of column name and values
$ user -> update ( $ id , $ data ); // $id to be updated with $data
$ user -> delete ( $ id ); // Row to delete with $id Model akan menyimpulkan nama tabel sebagai bentuk jamak snake_case dari nama kelas Anda. Jadi dalam kasus di atas untuk kelas pengguna akan menjadi pengguna dengan cara yang sama appData adalah app_data dan galeri akan menjadi galeri. Anda dapat mendefinisikan nama Anda sendiri dengan menimpa properti $table , cara yang sama $id dianggap sebagai kunci utama default dan dapat ditimpa juga.
class User extends Model
{
protected $ table = " my_table " ;
protected $ id = " tbl_id " ;
}Apa pun yang kompleks dari ini Anda harus melakukan permintaan sendiri. Mantan:
use Core Model ;
use Core Database ;
class User extends Model
{
public function deleteByName ( $ name )
{
$ sql = " DELETE FROM $ this -> table WHERE name=? " ;
return Database:: getConnection ()
-> prepare ( $ sql )
-> execute ([ $ name ]);
}
} Juga untuk mendapatkan ID insert terakhir Anda dapat melakukan Database::getConnection()->lastInsertId() .