MINI adalah kerangka aplikasi PHP yang sangat sederhana dan mudah dipahami, direduksi secara maksimal. MINI BUKAN merupakan kerangka kerja profesional dan tidak dilengkapi dengan semua hal yang dimiliki kerangka kerja sebenarnya. Jika Anda hanya ingin menampilkan beberapa halaman, melakukan beberapa panggilan database dan sedikit AJAX di sana-sini, tanpa membaca dokumentasi besar-besaran tentang kerangka kerja profesional yang sangat kompleks, maka MINI mungkin sangat berguna bagi Anda. MINI mudah dipasang, dapat dijalankan hampir di mana saja, dan tidak membuat segalanya menjadi lebih rumit dari yang diperlukan.
Untuk pengenalan lebih dalam tentang MINI, lihat postingan blog ini: MINI, aplikasi PHP barebone yang sangat sederhana.
MINI mempunyai adik yang diberi nama TINY. Ini mirip dengan MINI, tetapi berjalan tanpa mod_rewrite di hampir semua lingkungan. Tidak cocok untuk situs langsung, tapi bagus untuk pembuatan prototipe cepat.
MINI juga mempunyai kakak yang lebih besar yaitu MINI2. Bahkan lebih sederhana, dibuat menggunakan Slim dan memiliki fitur-fitur bagus seperti kompilasi SASS, Twig, dll.
MINI3 merupakan penerus MINI, menggunakan struktur aplikasi asli MINI1 asli (tanpa Slim di bawah kap), tetapi dengan autoloading PSR-4 yang tepat, beberapa kelas model, dan namespace asli.
Jika Anda menggunakan Vagrant untuk pengembangan Anda, maka Anda dapat menginstal MINI dengan satu klik (atau satu perintah pada baris perintah) [Vagrant doc]. MINI hadir dengan file demo Vagrant (mendefinisikan kotak Vagrant Anda) dan demo bootstrap.sh yang secara otomatis menginstal Apache, PHP, MySQL, PHPMyAdmin, git dan Composer, menetapkan kata sandi yang dipilih di MySQL dan PHPMyadmin dan bahkan di dalam kode aplikasi, mengunduh dependensi Komposer, mengaktifkan mod_rewrite dan mengedit pengaturan Apache, mengunduh kode dari GitHub dan menjalankan pernyataan demo SQL (untuk data demo). Ini 100% otomatis, Anda akan berakhir setelah +/- 5 menit dengan instalasi MINI2 yang berjalan sepenuhnya di dalam kotak Vagrant Ubuntu 14.04 LTS.
Untuk melakukannya, letakkan Vagrantfile
dan bootstrap.sh
dari _vagrant
di dalam folder (dan tidak ada yang lain). Lakukan vagrant box add ubuntu/focal64
untuk menambahkan Ubuntu 20.04 LTS 64bit ke Vagrant (kecuali Anda sudah memilikinya), lalu lakukan vagrant up
untuk menjalankan kotak tersebut. Ketika instalasi selesai Anda dapat langsung menggunakan aplikasi demo yang terinstal sepenuhnya di 192.168.33.44
(Anda dapat mengubahnya di Vagrantfile). Karena ini hanyalah lingkungan demo cepat, kata sandi root MySQL dan kata sandi root PHPMyAdmin disetel ke 12345678
, proyek diinstal di /var/www/html/myproject
. Anda pasti dapat mengubahnya di dalam bootstrap.sh
. Matikan kotak dengan vagrant halt
Anda dapat menginstal MINI termasuk Apache, MySQL, PHP dan PHPMyAdmin, mod_rewrite, Composer, semua pengaturan yang diperlukan dan bahkan kata sandi di dalam file konfigurasi hanya dengan mengunduh satu file dan menjalankannya, seluruh instalasi akan berjalan 100% secara otomatis. Temukan tutorialnya di artikel blog ini: Instal MINI dalam 30 detik di dalam Ubuntu 14.04 LTS
application/config/config.php
_install/
(dengan PHPMyAdmin misalnya).MINI berjalan tanpa konfigurasi lebih lanjut. Anda juga dapat memasukkannya ke dalam sub-folder, ini akan berfungsi tanpa konfigurasi lebih lanjut. Mungkin bermanfaat : Tutorial sederhana Cara install LAMPP (Linux, Apache, MySQL, PHP, PHPMyAdmin) di Ubuntu 14.04 LTS dan sama untuk Ubuntu 12.04 LTS.
server {
server_name default_server _; # Listen to any servername
listen [::]:80;
listen 80 ;
root /var/www/html/myproject/public;
location / {
index index.php;
try_files / $uri / $uri / /index.php?url= $uri ;
}
location ~ .(php)$ {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name ;
include fastcgi_params;
}
}
Diskusi lebih mendalam tentang pengaturan nginx dapat ditemukan di sini.
Skrip ini menggunakan mod_rewrite dan memblokir semua akses ke segala sesuatu di luar folder/public. Folder/file .git Anda, file temp sistem operasi, folder aplikasi, dan lainnya tidak dapat diakses (bila diatur dengan benar). Untuk permintaan basis data, PDO digunakan, jadi tidak perlu memikirkan tentang injeksi SQL (kecuali Anda menggunakan versi MySQL yang sangat ketinggalan jaman).
MINI dilengkapi dengan alat debugger PDO kecil yang disesuaikan (temukan kodenya di application/libs/helper.php), mencoba meniru pernyataan PDO-SQL Anda. Ini sangat mudah digunakan:
$ sql = " SELECT id, artist, track, link FROM song WHERE id = :song_id LIMIT 1 " ;
$ query = $ this -> db -> prepare ( $ sql );
$ parameters = array ( ' :song_id ' => $ song_id );
echo Helper:: debugPDO ( $ sql , $ parameters );
$ query -> execute ( $ parameters );
Proyek ini ditulis dalam PHP5 kali, tetapi dengan dirilisnya PHP7 tidak mungkin lagi memberi nama kelas "Error" karena PHP sendiri sekarang memiliki kelas Error internal. Mengganti nama adalah solusi paling sederhana, dibandingkan dengan opsi lain seperti "ErrorController" dll. Yang akan menambah masalah baru seperti nama file huruf besar dll. (yang tidak akan berfungsi dengan baik pada beberapa pengaturan).
Proyek ini dilisensikan di bawah Lisensi MIT. Ini berarti Anda dapat menggunakan dan memodifikasinya secara gratis dalam proyek pribadi atau komersial.
Dan omong-omong, saya juga ngeblog di Dev Metal.
Jalur URL aplikasi diterjemahkan langsung ke pengontrol (= file) dan metodenya di dalam aplikasi/pengontrol.
example.com/home/exampleOne
akan melakukan apa yang dikatakan metode exampleOne() di application/controllers/home.php.
example.com/home
akan melakukan apa yang dikatakan metode index() di application/controllers/home.php.
example.com
akan melakukan apa yang dikatakan metode index() di application/controllers/home.php (fallback default).
example.com/songs
akan melakukan apa yang dikatakan metode index() di application/controllers/songs.php.
example.com/songs/editsong/17
akan melakukan apa yang dikatakan metode editsong() di application/controllers/songs.php dan akan meneruskan 17
sebagai parameternya.
Menjelaskan sendiri, bukan?
Mari kita lihat metode exampleOne() di home-controller (application/controllers/home.php): Ini hanya menampilkan header, footer dan halaman example_one.php (di views/home/). Dengan niat sesederhana dan sealami mungkin.
public function exampleOne ()
{
// load view
require APP . ' views/_templates/header.php ' ;
require APP . ' views/home/example_one.php ' ;
require APP . ' views/_templates/footer.php ' ;
}
Mari kita lihat metode indeks() di pengontrol lagu (application/controllers/songs.php): Mirip dengan exampleOne, tetapi di sini kami juga meminta data. Sekali lagi, semuanya sangat dikurangi dan sederhana: $this->model->getAllSongs() cukup memanggil metode getAllSongs() di application/model/model.php.
public function index ()
{
// getting all songs and amount of songs
$ songs = $ this -> model -> getAllSongs ();
$ amount_of_songs = $ this -> model -> getAmountOfSongs ();
// load view. within the view files we can echo out $songs and $amount_of_songs easily
require APP . ' views/_templates/header.php ' ;
require APP . ' views/songs/index.php ' ;
require APP . ' views/_templates/footer.php ' ;
}
Untuk mempermudah, semua metode penanganan data ada di application/model/model.php. Ini pastinya tidak terlalu profesional, tetapi implementasinya paling sederhana. Lihat tampilan getAllSongs() di model.php: PDO murni dan super sederhana.
public function getAllSongs ()
{
$ sql = " SELECT id, artist, track, link FROM song " ;
$ query = $ this -> db -> prepare ( $ sql );
$ query -> execute ();
return $ query -> fetchAll ();
}
Hasilnya, di sini $songs, dapat dengan mudah digunakan langsung di dalam file tampilan (dalam hal ini application/views/songs/index.php, dalam contoh sederhana):
<tbody>
<?php foreach ( $ songs as $ song ) { ?>
<tr>
<td> <?php if ( isset ( $ song -> artist )) echo htmlspecialchars ( $ song -> artist , ENT_QUOTES , ' UTF-8 ' ); ?> </td>
<td> <?php if ( isset ( $ song -> track )) echo htmlspecialchars ( $ song -> track , ENT_QUOTES , ' UTF-8 ' ); ?> </td>
</tr>
<?php } ?>
</tbody>
MINI adalah penerus php-mvc. Karena php-mvc tidak menyediakan struktur MVC yang sebenarnya (dan beberapa orang mengeluh tentang hal itu - dan itu memang benar!) Saya telah mengganti nama dan membangun kembali proyek tersebut.
... MINI hanyalah alat bantu sederhana yang saya buat untuk pekerjaan sehari-hari, hanya karena lebih mudah untuk diatur dan ditangani daripada kerangka kerja sebenarnya. Untuk pekerjaan agensi sehari-hari, pembuatan prototipe cepat, dan proyek yang digerakkan oleh frontend, semuanya baik-baik saja, berhasil, dan sama sekali tidak ada alasan untuk membahas mengapa ini "sial dibandingkan dengan Laravel", mengapa ia tidak mengikuti beberapa prinsip MVC atau mengapa tidak ada dukungan pribadi yang tidak dibayar atau tidak ada terjemahan bahasa Rusia atau hal-hal aneh serupa. Penindasan terhadap proyek Open-Source (dan pembuatnya) telah mencapai dimensi yang gila.
Saya menulis ini tanpa bayaran, secara sukarela, di waktu luang saya dan mengunggahnya ke GitHub untuk dibagikan. Ini benar-benar gratis, untuk penggunaan pribadi dan komersial. Jika Anda tidak menyukainya, jangan gunakan itu. Jika Anda melihat masalah, silakan tulis tiketnya (dan jika Anda benar-benar keren: Saya sangat berterima kasih atas komitmen apa pun!). Tapi jangan menghina, jangan mengeluh, jangan membenci. Hanya orang jahat yang melakukan hal tersebut.
Harap komit ke cabang pengembangan (yang menampung versi dalam pengembangan), bukan ke cabang master (yang menampung versi yang diuji dan stabil).
Desember 2002
Agustus 2016
Februari 2015
Desember 2014
November 2014
Oktober 2014
September 2014
Agustus 2014
Juni 2014
April 2014
Januari 2014
Dukung proyek ini dengan menyewa server di DigitalOcean atau sekadar memberi tip kopi di BuyMeACoffee.com. Terima kasih! :)