MINI 是一個極其簡單且易於理解的框架 PHP 應用程序,最大限度地簡化了。 MINI 不是一個專業的框架,它不具備真正框架所擁有的所有功能。如果您只想顯示一些頁面,進行一些資料庫呼叫和一點點 AJAX,而不需要閱讀大量高度複雜的專業框架的文檔,那麼 MINI 可能對您非常有用。 MINI 易於安裝,幾乎可以在任何地方運行,並且不會使事情變得不必要的複雜。
想更深入介紹 MINI,請查看這篇文章:MINI,一個極其簡單的準系統 PHP 應用程式。
MINI 有一個較小的兄弟,名為 TINY。它與 MINI 類似,但在幾乎所有環境中都無需 mod_rewrite 即可運作。不適合即時網站,但適合快速原型設計。
MINI 還有一個更大的兄弟,名為 MINI2。它甚至更簡單,是使用 Slim 構建的,並且具有 SASS 編譯、Twig 等不錯的功能。
MINI3 是 MINI 的後繼者,使用原始的 MINI1 原生應用程式結構(底層沒有 Slim),但具有適當的 PSR-4 自動載入、多個模型類別和真實的命名空間。
如果您使用 Vagrant 進行開發,那麼您可以一鍵(或命令列上的一個命令)安裝 MINI [Vagrant doc]。 MINI 附帶了一個示範Vagrant 檔案(定義你的Vagrant 盒子)和一個示範bootstrap.sh,它會自動安裝Apache、PHP、MySQL、PHPMyAdmin、git 和Composer,在MySQL 和PHPMyadmin 甚至應用程式碼中設定選定的密碼,下載 Composer 依賴項,啟動 mod_rewrite 並編輯 Apache 設置,從 GitHub 下載程式碼並執行演示 SQL 語句(用於演示資料)。這是 100% 自動的,您將在 +/- 5 分鐘後在 Ubuntu 14.04 LTS Vagrant 盒子內完全運行 MINI2 安裝。
為此,請將_vagrant
中的Vagrantfile
和bootstrap.sh
放入資料夾中(僅此而已)。執行vagrant box add ubuntu/focal64
將 Ubuntu 20.04 LTS 64 位元新增至 Vagrant(除非您已經擁有它),然後執行vagrant up
來執行該方塊。安裝完成後,您可以直接在192.168.33.44
上使用完全安裝的演示應用程式(您可以在 Vagrantfile 中變更此設定)。由於這只是一個快速示範環境,MySQL root 密碼和 PHPMyAdmin root 密碼設定為12345678
,該專案安裝在/var/www/html/myproject
。您可以在bootstrap.sh
中確定更改此設定。用vagrant halt
關閉盒子
您只需下載一個檔案並執行即可安裝 MINI,包括 Apache、MySQL、PHP 和 PHPMyAdmin、mod_rewrite、Composer、所有必要的設置,甚至是設定檔中的密碼,整個安裝將 100% 自動運行。在這篇部落格文章中尋找教學:在 Ubuntu 14.04 LTS 中在 30 秒內安裝 MINI
application/config/config.php
中編輯資料庫憑證_install/
資料夾中的 .sql 語句(例如 PHPMyAdmin)。MINI 無需任何進一步配置即可運作。您也可以將其放入子資料夾中,無需任何進一步配置即可運行。也許有用:關於如何在 Ubuntu 14.04 LTS 上安裝 LAMPP(Linux、Apache、MySQL、PHP、PHPMyAdmin)的簡單教程以及 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;
}
}
關於 nginx 設定的更深入的討論可以在這裡找到。
該腳本利用 mod_rewrite 並阻止對 /public 資料夾以外的所有內容的所有存取。您的 .git 資料夾/檔案、作業系統臨時檔案、應用程式資料夾和其他所有內容都無法存取(如果設定正確)。對於資料庫請求,使用 PDO,因此無需考慮 SQL 注入(除非您使用的是極其過時的 MySQL 版本)。
MINI 附帶了一些客製化的 PDO 偵錯器工具(在 application/libs/helper.php 中找到程式碼),嘗試模擬您的 PDO-SQL 語句。它非常容易使用:
$ 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 );
這個專案是用 PHP5 編寫的,但是隨著 PHP7 的發布,不再可能將類別命名為“Error”,因為 PHP 本身現在有一個內部 Error 類別。與“ErrorController”等其他選項相比,重新命名是最簡單的解決方案,這會添加大寫檔案名稱等新問題(在某些設定上無法正常工作)。
該項目已獲得 MIT 許可證的許可。這意味著您可以在私人或商業項目中免費使用和修改它。
順便說一句,我也在 Dev Metal 上寫部落格。
應用程式的 URL 路徑直接轉換為應用程式/控制器內的控制器(=檔案)及其方法。
example.com/home/exampleOne
將依照 application/controllers/home.php 中的exampleOne()方法執行操作。
example.com/home
將依照 application/controllers/home.php 中的index()方法執行操作。
example.com
將依照 application/controllers/home.php 中的index()方法執行操作(預設回退)。
example.com/songs
將依照 application/controllers/songs.php 中的index()方法執行操作。
example.com/songs/editsong/17
將執行 application/controllers/songs.php 中的editsong()方法所說的操作,並將17
作為參數傳遞給它。
不言自明,對吧?
讓我們來看看 home-controller (application/controllers/home.php) 中的 exampleOne() 方法:這只顯示頁首、頁尾和 example_one.php 頁面(在 views/home/ 中)。意圖盡可能簡單和原生。
public function exampleOne ()
{
// load view
require APP . ' views/_templates/header.php ' ;
require APP . ' views/home/example_one.php ' ;
require APP . ' views/_templates/footer.php ' ;
}
讓我們來看看歌曲控制器(application/controllers/songs.php)中的index()方法:與exampleOne類似,但這裡我們也要求資料。同樣,一切都極其簡化和簡單:$this->model->getAllSongs() 只需呼叫 application/model/model.php 中的 getAllSongs() 方法。
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 ' ;
}
為了極為簡單,所有資料處理方法都位於 application/model/model.php 中。這肯定不是很專業,但卻是最簡單的實作。看看 model.php 中的 getAllSongs() 是什麼樣子:純粹且超級簡單的 PDO。
public function getAllSongs ()
{
$ sql = " SELECT id, artist, track, link FROM song " ;
$ query = $ this -> db -> prepare ( $ sql );
$ query -> execute ();
return $ query -> fetchAll ();
}
然後,可以輕鬆地在視圖文件中直接使用結果(此處為 $songs)(在本例中為 application/views/songs/index.php,是一個簡化的範例):
<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 是 php-mvc 的繼承者。由於 php-mvc 沒有提供真正的 MVC 結構(並且有幾個人抱怨這一點 - 這是完全正確的!)我已經重命名並重建了該專案。
... MINI 只是我為日常工作創建的一個簡單的輔助工具,只是因為它比真正的框架更容易設定和處理。對於日常代理工作、快速原型設計和前端驅動的專案來說,這是完全沒問題的,可以完成工作,並且絕對沒有理由討論為什麼它“與Laravel 相比很糟糕”,為什麼它不遵循幾個MVC原則,或為什麼沒有個人無償支持或沒有俄語翻譯或類似的奇怪的東西。針對開源專案(及其作者)的攻擊確實達到了瘋狂的程度。
我在空閒時間自願無償編寫了這篇文章,並將其上傳到 GitHub 上進行分享。它完全免費,可供私人和商業用途。如果您不喜歡它,請不要使用它。如果您發現問題,請寫一張票(如果您真的很酷:我非常感謝您的任何提交!)。但不要抨擊,不要抱怨,不要仇恨。只有壞人才會這麼做。
請提交到開發分支(包含正在開發的版本),而不是提交到主分支(包含經過測試的穩定版本)。
2002年12月
2016年8月
2015年二月
2014年12月
2014年11月
2014年10月
2014年9月
2014年8月
2014年6月
2014年4月
2014年1月
透過在 DigitalOcean 租用伺服器或在 BuyMeACoffee.com 上給一杯咖啡小費來支援該專案。謝謝! :)