
MINI는 매우 간단하고 이해하기 쉬운 기본 PHP 애플리케이션으로, 최대 수준으로 축소되었습니다. MINI는 전문적인 프레임워크가 아니며 실제 프레임워크에 있는 모든 기능을 제공하지 않습니다. 매우 복잡한 전문 프레임워크에 대한 방대한 문서를 읽지 않고도 일부 페이지만 표시하고 데이터베이스 호출 몇 개와 약간의 AJAX를 여기저기서 실행하고 싶다면 MINI가 매우 유용할 수 있습니다. MINI는 설치가 쉽고 거의 모든 곳에서 작동하며 필요 이상으로 복잡하게 만들지 않습니다.
MINI에 대한 더 자세한 소개를 보려면 매우 간단한 베어본 PHP 애플리케이션인 MINI 블로그 게시물을 살펴보세요.
MINI에는 TINY라는 남동생이 있습니다. MINI와 유사하지만 거의 모든 환경에서 mod_rewrite 없이 실행됩니다. 라이브 사이트에는 적합하지 않지만 빠른 프로토타이핑에는 적합합니다.
MINI에는 MINI2라는 큰 형도 있습니다. 훨씬 더 간단하고 Slim을 사용하여 구축되었으며 SASS 컴파일, Twig 등과 같은 멋진 기능을 갖추고 있습니다.
MINI3은 MINI의 후속 제품으로, 원래의 MINI1 기본 애플리케이션 구조(후드 아래에 Slim이 없음)를 사용하지만 적절한 PSR-4 자동 로딩, 다중 모델 클래스 및 실제 네임스페이스를 갖추고 있습니다.
개발에 Vagrant를 사용하고 있다면 한 번의 클릭(또는 명령줄에서 한 번의 명령) [Vagrant doc]으로 MINI를 설치할 수 있습니다. MINI에는 데모 Vagrant 파일(Vagrant 상자 정의)과 Apache, PHP, MySQL, PHPMyAdmin, git 및 Composer를 자동으로 설치하고 선택한 비밀번호를 MySQL 및 PHPMyadmin 및 애플리케이션 코드 내부에 설정하는 데모 bootstrap.sh가 함께 제공됩니다. 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 루트 비밀번호와 PHPMyAdmin 루트 비밀번호는 12345678 로 설정되어 있으므로 프로젝트는 /var/www/html/myproject 에 설치됩니다. bootstrap.sh 내에서 이를 변경할 수 있습니다. vagrant halt 로 상자를 종료합니다.
Apache, MySQL, PHP 및 PHPMyAdmin, mod_rewrite, Composer, 필요한 모든 설정, 심지어 구성 파일 내의 비밀번호까지 포함하는 MINI를 간단히 파일 하나를 다운로드하고 실행하면 설치할 수 있으며 전체 설치가 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-SQL 문을 에뮬레이트하는 작은 맞춤형 PDO 디버거 도구(application/libs/helper.php에서 코드 찾기)가 함께 제공됩니다. 사용이 매우 쉽습니다:
$ 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 ' ;
}노래 컨트롤러(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년 2월
2014년 12월
2014년 11월
2014년 10월
2014년 9월
2014년 8월
2014년 6월
2014년 4월
2014년 1월
DigitalOcean에서 서버를 임대하거나 BuyMeACoffee.com에서 커피를 팁으로 제공하여 프로젝트를 지원하세요. 감사해요! :)