YAMF (kerangka kerja MVC lainnya) adalah kerangka kerja MVC PHP kecil yang dirancang untuk memungkinkan Anda mulai menggunakan paradigma MVC dengan cepat tanpa banyak pekerjaan pengaturan. Yang Anda butuhkan hanyalah server web yang menerima file .htaccess dan Anda cukup baik untuk pergi!
Persyaratan Minimum: PHP 7.0+.
Use this template pada halaman Repo Proyek Utama.config.php jika perlu. Sesuaikan parameter apa pun yang Anda inginkan di sana atau menambahkan parameter baru ke $app , seperti logika sesi. Secara default, Anda tidak perlu menyesuaikan apa pun untuk menjalankan dan menjalankan situs Anda.config-private.sample.php ke config-private.php dan sesuaikan dengan kebutuhan Anda. Misalnya, Anda dapat mengatur $app->db untuk menjadi instance PDO untuk database lokal Anda. Perhatikan bahwa config-private.php akan dimuat sebelum apa pun di config.php terjadi.use Yamf/XYZ untuk berfungsi, Anda harus menggunakan komposer. Menggunakan Composer cukup mudah: cukup buka halaman unduhan dan jalankan skrip di atas. (Catatan: Jika Anda berada di Windows, Anda ingin mengikuti instruksi di sini di halaman intro.)composer install (jika Anda memiliki file composer.phar di direktori Anda, jalankan php composer.phar install ). Itu akan duduk dan berpikir sebentar. Mereka tidak ada di sini, dan mereka tidak sengaja di sini! YAMF dengan sengaja ditulis untuk tidak menggunakan dependensi eksternal selain autoloader komposer untuk menurunkan penghalang masuk untuk menggunakan paradigma MVC dalam PHP. Jika Anda menginginkan hal -hal itu, cukup tarik dengan manajer ketergantungan favorit Anda (seperti komposer). Karena Composer sudah diperlukan untuk menjalankan proyek ini untuk PSR-4 Autoloading, kami sarankan menggunakan Composer. vendor/autoload.php sudah disertakan untuk Anda di init.php .
Untuk catatan tentang templating tampilan, lihat bagian sub -classing.
Jika Anda membaca dokumentasi berikut di YAMF, Anda mungkin akan jauh lebih baik daripada hanya melompat dan mencoba membaca kode sendiri. :) Ini hanya akan memakan waktu beberapa menit, dan itu sepadan!
Untuk memfasilitasi pengalihan parameter konfigurasi yang mudah, seperti pengaturan basis data, dll., YAMF melewati variabel $app dari kelas YamfAppConfig untuk setiap fungsi pengontrol. Anda dapat mengatur variabel ini untuk menyimpan objek PDO database Anda, mengubah ekstensi tampilan atau lokasi folder Anda, dan banyak pengaturan lainnya. Jika Anda ingin menambahkan nilai Anda sendiri ke $app , Anda dapat membuat kelas yang berasal dari YamfAppConfig dan mengubah pengaturan appConfigClass di config.php untuk menunjuk ke kelas khusus Anda. Perhatikan bahwa kelas kustom Anda harus berasal dari YamfAppConfig ! Lihat config.php untuk melihat semua pengaturan dan nilai yang dilewati oleh YAMF melalui $app . Khususnya, Anda bisa:
viewsFolderName )viewExtension )defaultHeaderName / defaultFooterName )config-private.php ) $app tersedia secara otomatis dalam pandangan Anda untuk Anda.
Hal pertama yang mungkin ingin Anda lakukan adalah menambahkan rute baru. Untuk melakukan itu, ikuti langkah -langkah ini:
app/Controllers proyek. Subfolder baik -baik saja. Pengontrol sebenarnya tidak harus memiliki Controller dalam nama, tetapi pastikan nama kelas cocok dengan nama file.public yang mengambil dua parameter: $app dan $request (dalam urutan itu).routes.php dan pastikan Anda memahami dokumentasi dan contoh cara kerja rute.routes .POST jika perlu.Parent-Folder/Controller-Name .yamf/Responses/Response , yang bisa berupa apa saja dari View hingga respons JSON hingga, yah, apa pun yang Anda inginkan, sungguh. Lihat bagian berikutnya untuk info lebih lanjut di sini.yamf/Responses/View . Buat file PHP (tampilan) di folder views - lagi, subfolder OK - dan, dalam metode pengontrol Anda, return new View('name/of/view'); .Pendeknya:
app/Controllersroutes.phpviews jika perlureturn new View('name/of/view'); Semua metode pengontrol yang disebut sebagai hasil dari rute harus mengembalikan yamf/Responses/Response atau subclass dari kelas tersebut. Berikut adalah beberapa deskripsi tentang cara menggunakan masing -masing. Sebagian besar dapat digunakan dalam satu baris hanya dengan konstruktor.
Response - kelas dasar untuk respons dari rute.new Response($statusCode = 200)yamf/Responses/Response lainnya dari kelas induk ini, mereka semua dapat mengembalikan kode status HTTP khusus, jika Anda mau!ErrorMessage - Pembungkus sederhana di sekitar tampilan untuk mengirim kembali kode status 400 dan tampilan kesalahan.php.new ErrorMessage($msg = '', $name = 'error', $title = '', $headerName = '', $footerName = '') . $name adalah nama tampilan.$error . Anda tidak dapat mengubah ini tanpa subklassing.views/header.php dan views/footer.php .JsonResponse - Contoh tentang bagaimana Anda dapat mengirimkan kembali respons JSON dari pengontrol Andanew JsonResponse($data, $jsonEncodeOptions = 0)$data melalui echo json_encode($this->data, $this->jsonEncodeOptions);NotFound - Digunakan untuk mengembalikan pesan 404 yang tidak ditemukan kembali ke klien.new NotFound($name = '404', $data = [], $title = '', $headerName = '', $footerName = '') . $name adalah nama tampilan.views/header.php dan views/footer.php .Response .Redirect - Memungkinkan 302 pengalihan ke beberapa halaman atau rute lainnyanew Redirect($redirectPath, $isInternalRedirect = true)$isInternalRedirect digunakan untuk mengarahkan kembali ke rute dalam situs web/ routes.php data saat ini . Jika Anda ingin mengarahkan kembali ke rute internal, gunakan Redirect seperti ini: new Redirect('/route/name); (Perhatikan start / ). Jika tidak, gunakan Redirect seperti ini: new Redirect('https://example.com', false); .View -Digunakan untuk mengembalikan beberapa tampilan HTML berbasis PHP.new View($name, $data = [], $title = '', $headerName = '', $footerName = '') . $name adalah nama tampilan.compact . Lihat Contoh BlogController .views/header.php dan views/footer.php . Jika Anda memiliki ide untuk lebih banyak jenis Response yang harus disertakan dalam YAMF, buka permintaan fitur (melalui tab Masalah) atau buka permintaan tarik!
Dua variabel utama dikirim ke metode pengontrol Anda dari rute: $app dan $request . Perhatikan bahwa semua output View akan memiliki variabel $app dan $request yang tersedia untuk digunakan. Anda tidak perlu mengirimkannya sebagai parameter $data .
AppConfig $app $app terutama variabel konfigurasi yang telah Anda atur di config.php . Periksa file itu untuk sekilas apa yang tersedia. Beberapa item yang lebih penting adalah:
$app->db untuk koneksi databasenull untuk menghindari menggunakannya sama sekali. Selain itu, ada dua variabel yang tersedia yang diatur dalam init.php :
$app->isLocalHost -Apakah aplikasi berjalan pada host lokal ( 127.0.0.1 atau ::1 )$app->basePath -Direktori dasar untuk aplikasi web Anda saat ini. Ini dapat digunakan untuk mengizinkan aplikasi web bersarang di server web Anda. Saya sangat menyarankan memanfaatkan variabel ini dalam views Anda saat melakukan tautan situs web lokal sehingga jika Anda memindahkan file atau lebih lanjut memindahkan semuanya ke subfolder semuanya tidak rusak. Untuk menautkan ke halaman lain di situs Anda, cukup gunakan fungsi $app->yurl(string) (YAMF URL) seperti ini: <?= $app->yurl('/path/to/page') ?> . $request $request akan memiliki semua data Anda tentang rute Anda dan parameter berbeda yang telah masuk dengan permintaan Anda. Ini tipe yamf/Request . Ini memiliki anggota umum ini tersedia:
$request->route -string rute mentah untuk permintaan ini$request->controller -nama string controller$request->function -nama string fungsi pengontrol untuk dipanggil$request->routeParams -param apa pun di rute seperti {id}. Format: ['id' => nilai]$request->get -setiap get params yang ditemukan di URL-format yang sama dengan $ _get (tidak ada pemrosesan tambahan yang dilakukan)$request->post -Posting Params apa pun-format yang sama dengan $ _post (tidak ada pemrosesan tambahan yang dilakukan)$request->anchor -jika digunakan, bagian # URL (tanpa #). Router cukup pintar untuk tidak cocok dengan URL seperti /blah/#/foo . Cara termudah bagi Anda untuk memperluas kerangka kerja ini adalah dengan berasal dari Response (atau kelas anak Response lainnya) dan/atau membuat kelas orang tua untuk beberapa pengontrol Anda. Misalnya, dengan mendapatkan dari View , Anda dapat mengubah output tampilan untuk menggunakan mesin templating ranting, bukan hanya output PHP sederhana. Dengan membuat kelas induk untuk pengontrol Anda, Anda dapat menambahkan hal -hal seperti validasi atau pemrosesan data tambahan lainnya yang harus terjadi untuk semua rute API Anda, seperti memverifikasi nama pengguna/kata sandi atau token. Pilihannya tidak terbatas dan potensial hebat!
Ada contoh menggunakan ranting, bukan PHP mentah di cabang ranting!
Salah satu fitur bagus yang didukung YAMF adalah halaman web statis yang tidak memerlukan route atau controller . Jika Anda ingin /about hanya menjadi halaman sederhana, lempar halaman about.php di views/static/ folder dan - bam! - /about pekerjaan di situs web Anda. Bagaimana dengan subfolder seperti /blog/post-name ? Itu juga berfungsi! Tambahkan file views/static/blog/post-name.php dan hanya berfungsi (TM)! Anda dapat menggunakan ini untuk tetap memiliki URL yang cantik di situs web Anda tanpa repot -repot menambahkan rute dan pengontrol.
Anda dapat mengonfigurasi lokasi tampilan statis di config.php .
Perhatikan bahwa router berusaha untuk mencocokkan rute router.php sebelum memeriksa halaman statis.
Fitur yang didukung router yang tidak segera diaktifkan adalah pemendekan URL-misalnya https://example.com/short-url . Ini membutuhkan koneksi basis data, tetapi jika Anda menambahkan koneksi database dan memiliki tabel database yang sesuai (skema ada di config.sample.php ), pemendekan URL dapat digunakan jika Anda mau. Anda tidak diharuskan mengaktifkan fitur ini.
Saya telah menyertakan beberapa logika sesi default yang dikomentari di config.sample.php . Jangan ragu untuk menggunakannya, memodifikasinya, atau membuangnya. Jika Anda memiliki saran tentang cara meningkatkan fungsionalitas ini, silakan buka permintaan tarik atau masalah untuk menghasilkan diskusi lebih lanjut.
Senang Anda bertanya! Selalu ada hal-hal yang dapat dilakukan pada proyek open-source: memperbaiki bug, fitur baru, dan banyak lagi! Lihat tab Masalah Repositori ini dan lihatlah bug apa yang telah dilaporkan dan fitur mana yang telah diminta. Ada beberapa info lebih lanjut tentang berkontribusi dalam dokumen yang berkontribusi.
Lisensi MIT. Pastikan untuk memasukkan lisensi untuk kerangka kerja ini (bersama dengan tautan github jika Anda merasa murah hati!) Saat menggunakannya di situs Anda. Terima kasih! :)
Terima kasih khusus kepada Bootswatch untuk tema kertas bootstrap yang digunakan dalam sampel.