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 を使用している場合は、ワンクリック (またはコマンドラインで 1 つのコマンド) で MINI をインストールできます [Vagrant ドキュメント]。 MINI には、デモ Vagrant ファイル (Vagrant ボックスを定義する) と、Apache、PHP、MySQL、PHPMyAdmin、git、Composer を自動的にインストールし、選択したパスワードを MySQL と PHPMyadmin に設定し、アプリケーション コード内にも設定するデモ bootstrap.sh が付属しています。 Composer の依存関係をダウンロードし、mod_rewrite をアクティブにして Apache 設定を編集し、GitHub からコードをダウンロードして、デモ SQL ステートメントを実行します (デモデータ)。これは 100% 自動で行われ、Ubuntu 14.04 LTS Vagrant ボックス内で MINI2 のインストールが完全に実行されると、+/- 5 分後に終了します。
これを行うには、 _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
でボックスをシャットダウンする
1 つのファイルをダウンロードして実行するだけで、Apache、MySQL、PHP、PHPMyAdmin、mod_rewrite、Composer、すべての必要な設定、さらには構成ファイル内のパスワードを含む MINI をインストールでき、インストール全体が 100% 自動的に実行されます。このブログ記事のチュートリアルを参照してください: Ubuntu 14.04 LTS 内で 30 秒で MINI をインストールする
application/config/config.php
でデータベースの資格情報を編集します。_install/
フォルダー内の .sql ステートメントを実行します (たとえば、PHPMyAdmin を使用)。MINI はそれ以上の設定を行わなくても動作します。サブフォルダー内に配置することもでき、それ以上の設定を行わなくても機能します。役に立つかもしれません: LAMPP (Linux、Apache、MySQL、PHP、PHPMyAdmin) を Ubuntu 14.04 LTS にインストールする方法に関する簡単なチュートリアルと、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 のリリースでは、PHP 自体に内部 Error クラスがあるため、クラスに「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
渡します。
説明するまでもなく、そうですよね?
ホームコントローラー (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 ' ;
}
songs-controller (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 にアップロードして共有しました。個人利用でも商用利用でも完全に無料です。気に入らない場合は使用しないでください。問題を見つけた場合は、チケットを書いてください (そして、もしあなたが本当にクールであれば、コミットしていただきとても感謝しています!)。しかし、バッシングしたり、不平を言ったり、憎んだりしないでください。そんなことをするのは悪い人だけです。
master ブランチ (テスト済みの安定したバージョンを保持する) ではなく、develop ブランチ (開発中のバージョンを保持する) にコミットしてください。
2002 年 12 月
2016 年 8 月
2015 年 2 月
2014 年 12 月
2014 年 11 月
2014 年 10 月
2014 年 9 月
2014 年 8 月
2014 年 6 月
2014 年 4 月
2014 年 1 月
DigitalOcean でサーバーをレンタルするか、BuyMeACoffee.com でコーヒーをチップするだけでプロジェクトをサポートできます。ありがとう! :)