MINI เป็นแอปพลิเคชั่นโครงกระดูก PHP ที่เรียบง่ายและเข้าใจง่ายโดยลดขนาดลงเหลือสูงสุด MINI ไม่ใช่เฟรมเวิร์กระดับมืออาชีพ และไม่ได้มาพร้อมกับเฟรมเวิร์กจริงทั้งหมดที่มี หากคุณเพียงต้องการแสดงบางหน้า ทำการเรียกฐานข้อมูล 2-3 ครั้ง และ 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 และแม้แต่ภายในโค้ดแอปพลิเคชัน ดาวน์โหลดการพึ่งพาผู้แต่ง เปิดใช้งาน mod_rewrite และแก้ไขการตั้งค่า Apache ดาวน์โหลดโค้ดจาก GitHub และรันคำสั่ง SQL สาธิต (สำหรับข้อมูลสาธิต) นี่เป็นอัตโนมัติ 100% คุณจะจบลงหลังจาก +/- 5 นาทีด้วยการติดตั้ง MINI2 ที่รันอย่างสมบูรณ์ภายในกล่อง Ubuntu 14.04 LTS Vagrant
ในการทำเช่นนั้น ให้ใส่ Vagrantfile
และ bootstrap.sh
จาก _vagrant
ไว้ในโฟลเดอร์ (และไม่มีอะไรอื่นอีก) ทำ vagrant box add ubuntu/focal64
เพื่อเพิ่ม Ubuntu 20.04 LTS 64bit ให้กับ Vagrant (เว้นแต่คุณจะมีอยู่แล้ว) จากนั้นทำ vagrant up
เพื่อเรียกใช้กล่อง เมื่อการติดตั้งเสร็จสิ้น คุณสามารถใช้แอปสาธิตที่ติดตั้งเต็มรูปแบบได้โดยตรงบน 192.168.33.44
(คุณสามารถเปลี่ยนสิ่งนี้ได้ใน Vagrantfile) เนื่องจากนี่เป็นเพียงสภาพแวดล้อมสาธิตอย่างรวดเร็ว รหัสผ่านรูทของ MySQL และรหัสผ่านรูทของ PHPMyAdmin จึงถูกตั้งค่าเป็น 12345678
โปรเจ็กต์จึงได้รับการติดตั้งใน /var/www/html/myproject
คุณสามารถเปลี่ยนสิ่งนี้ได้อย่างแน่นอนภายใน bootstrap.sh
ปิดกล่องด้วย vagrant halt
คุณสามารถติดตั้ง MINI รวมถึง Apache, MySQL, PHP และ PHPMyAdmin, mod_rewrite, Composer, การตั้งค่าที่จำเป็นทั้งหมด และแม้แต่รหัสผ่านภายในไฟล์ configs เพียงดาวน์โหลดไฟล์เดียวและดำเนินการ การติดตั้งทั้งหมดจะทำงาน 100% โดยอัตโนมัติ ค้นหาบทช่วยสอนในบทความบล็อกนี้: ติดตั้ง MINI ใน 30 วินาทีใน Ubuntu 14.04 LTS
application/config/config.php
_install/
-folder (ด้วย 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 ทำให้ไม่สามารถตั้งชื่อคลาส "Error" ได้อีกต่อไป เนื่องจาก PHP มีคลาส Error ภายในอยู่แล้ว การเปลี่ยนชื่อเป็นวิธีแก้ปัญหาที่ง่ายที่สุด เมื่อเทียบกับตัวเลือกอื่นๆ เช่น "ErrorController" ฯลฯ ซึ่งจะเพิ่มปัญหาใหม่ เช่น ชื่อไฟล์ตัวพิมพ์ใหญ่ เป็นต้น (ซึ่งจะทำงานไม่ถูกต้องในการตั้งค่าบางอย่าง)
โครงการนี้ได้รับอนุญาตภายใต้ใบอนุญาต MIT ซึ่งหมายความว่าคุณสามารถใช้และแก้ไขได้ฟรีในโครงการส่วนตัวหรือเชิงพาณิชย์
และอีกอย่าง ฉันยังเขียนบล็อกที่ Dev Metal ด้วย
เส้นทาง URL ของแอปพลิเคชันแปลโดยตรงไปยังตัวควบคุม (= ไฟล์) และวิธีการภายในแอปพลิเคชัน/ตัวควบคุม
example.com/home/exampleOne
จะทำสิ่งที่ exampleOne() วิธีการใน application/controllers/home.php กล่าว
example.com/home
จะทำสิ่งที่วิธี index() ใน application/controllers/home.php กล่าว
example.com
จะทำสิ่งที่วิธี index() ใน application/controllers/home.php กล่าว (ทางเลือกเริ่มต้น)
example.com/songs
จะทำสิ่งที่วิธี index() ใน application/controllers/songs.php กล่าว
example.com/songs/editsong/17
จะทำสิ่งที่เมธอด editsong() ใน application/controllers/songs.php พูดและจะส่งผ่าน 17
เป็นพารามิเตอร์
อธิบายตัวเองใช่ไหม?
ลองดูที่ exampleOne()-method ใน home-controller (application/controllers/home.php): ซึ่งจะแสดงเพียงส่วนหัว ส่วนท้าย และหน้า 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): คล้ายกับ exampleOne แต่ที่นี่เรายังขอข้อมูลด้วย ขอย้ำอีกครั้งว่าทุกอย่างลดขนาดและเรียบง่ายลงอย่างมาก: $this->model->getAllSongs() เพียงเรียกเมธอด getAllSongs() ใน 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 ' ;
}
เพื่อความง่ายอย่างยิ่ง วิธีการจัดการข้อมูลทั้งหมดอยู่ใน application/model/model.php แน่นอนว่านี่ไม่ใช่ความเป็นมืออาชีพ แต่เป็นการใช้งานที่ง่ายที่สุด ดูว่า getAllSongs() ใน model.php มีลักษณะอย่างไร: 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 เพื่อแบ่งปัน เป็นบริการฟรีสำหรับการใช้งานส่วนตัวและเชิงพาณิชย์ ไม่ชอบก็อย่าใช้ หากคุณเห็นปัญหา โปรดเขียนตั๋ว (และถ้าคุณเจ๋งจริง ๆ ฉันขอบคุณมากสำหรับความมุ่งมั่นใด ๆ !) แต่ห้ามด่า ห้ามบ่น ห้ามเกลียด มีแต่คนเลวเท่านั้นที่ทำแบบนั้น
โปรดส่งไปยังสาขาพัฒนา (ซึ่งมีเวอร์ชันที่อยู่ระหว่างการพัฒนา) ไม่ใช่สาขาหลัก (ซึ่งมีเวอร์ชันทดสอบและเสถียร)
ธันวาคม 2545
สิงหาคม 2559
กุมภาพันธ์ 2558
ธันวาคม 2014
พฤศจิกายน 2014
ตุลาคม 2014
กันยายน 2014
สิงหาคม 2014
มิถุนายน 2014
เมษายน 2014
มกราคม 2014
สนับสนุนโครงการด้วยการเช่าเซิร์ฟเวอร์ที่ DigitalOcean หรือเพียงแค่จิบกาแฟที่ BuyMeACoffee.com ขอบคุณ! -