
MVPHP เป็นเฟรมเวิร์กที่ง่ายและแฮ็กได้ง่ายสำหรับการพัฒนาเว็บแอปพลิเคชัน PHP ที่มีศักยภาพน้อยที่สุด เฟรมเวิร์ก PHP จำนวนมากมีช่วงการเรียนรู้ที่สูงชันและมีการทำงานอย่างลึกซึ้ง MVPHP ได้รับการออกแบบมาเพื่อให้สิ่งต่าง ๆ ง่ายง่ายและใกล้เคียงกับ PHP บริสุทธิ์ นอกจากนี้ยังมีการใช้งาน Bootstrap ที่เรียบง่ายและปรับแต่งได้เพื่อให้คุณเริ่มสร้างส่วนหน้าโดยไม่ต้องยุ่งยากมาก
สิ่งที่รวมถึง:
มันคืออะไร:
MVPHP ไม่ใช่กรอบ PHP ที่แข็งแกร่งและผ่านการทดสอบอย่างดีเช่น Laravel, Symfony, Zend ฯลฯ กรอบนี้มีไว้สำหรับการพัฒนาเว็บแอปพลิเคชั่น PHP ที่พิสูจน์ได้อย่างรวดเร็วด้วยค่าใช้จ่ายน้อยที่สุดความคิดเห็นน้อยและมีความยืดหยุ่นมาก ใช้มันด้วยความเสี่ยงของคุณเอง! โปรดสร้างปัญหาหากคุณพบข้อผิดพลาดหรือมีคำแนะนำใด ๆ
composer install ในรูทโครงการnpm install -g gulp-cli เพื่อติดตั้ง Gulp CLI ทั่วโลกnpm install ในรูทโครงการเพื่อติดตั้งเครื่องมือที่เราต้องสร้างไฟล์ส่วนหน้าgulp เพื่อสร้างไฟล์ส่วนหน้าpublicแนวคิดพื้นฐานที่อยู่เบื้องหลังเฟรมเวิร์กนี้คือการเริ่มต้นด้วยคลาสง่าย ๆ ที่จะจัดการฟังก์ชั่นพื้นฐานทั้งหมด
app.php เป็นไฟล์ bootstrap ที่โหลดการตั้งค่า config.php ของเราก่อนจากนั้นสร้างคลาสหลักของเราโดยสร้างวัตถุ $app วัตถุ $auth ถูกสร้างขึ้นสำหรับฟังก์ชั่นที่เกี่ยวข้องกับการตรวจสอบทั้งหมด เราชี้คุณสมบัติของวัตถุหลักของเรา ( $app->auth ) เพื่ออ้างอิง $auth เพื่อให้สิ่งต่าง ๆ ง่ายและทำให้สามารถเข้าถึงได้ภายในขอบเขตของ $app
$ app = new MVPHP (); เกือบทุกอย่างที่เราทำจะใช้วัตถุ $app นี้
app.php ยังต้องการไฟล์ routes.php ในไดเรกทอรีรูทซึ่งเราจะกำหนดเส้นทางเริ่มต้นของเรา คุณจะเห็นตัวอย่างการทำงานหลายอย่างในไฟล์นี้
มีสองสามวิธีในการกำหนดเส้นทางและสิ่งที่ควรทำ:
$ app -> route ( ' /example ' , function () use ( $ app ) {
// Do stuff here
}); การปิดเป็นฟังก์ชันที่ไม่ระบุชื่อที่จะทำงานเมื่อคำขอ URI ตรงกับเส้นทาง เพื่อให้วิธีการในคลาส MVPHP หลักของเราสามารถเข้าถึงได้ภายในฟังก์ชั่นที่ไม่ระบุชื่อนี้เราระบุว่า use ($app) สิ่งนี้จะนำเข้าตัวแปร $app เข้าสู่ขอบเขตตัวแปรของฟังก์ชันที่ไม่ระบุชื่อ
$ app -> route ( ' /example/{id} ' , function ( $ params ) use ( $ app ) {
echo $ params [ ' id ' ];
});คุณสามารถระบุพารามิเตอร์ตัวแปรใน URI ที่มีวงเล็บ พวกเขาจะถูกระบุในอาร์เรย์ที่เชื่อมโยงกับคีย์คือชื่อที่กำหนดไว้ในเส้นทางและค่าเป็นค่าจริงที่ระบุไว้ใน URI คำขอ
$ app -> route ( ' /example/{id:int} ' , function ( $ params ) use ( $ app ) {
echo $ params [ ' id ' ];
});นอกจากนี้คุณยังสามารถกำหนดข้อ จำกัด สำหรับการจับคู่พารามิเตอร์ URI โดยใช้ลำไส้ใหญ่ตามด้วยประเภทข้อ จำกัด การปล่อยค่าข้อ จำกัด จะเริ่มต้นเป็นข้อ จำกัด "สตริง"
ตัวเลือกข้อ จำกัด :
ตัวอย่างการแสดงออกปกติ:
นิพจน์ใด ๆ ที่ใช้งานได้กับฟังก์ชั่น preg_match ของ PHP จะทำงานที่นี่ เครื่องมือนี้มีประโยชน์ในการทดสอบการแสดงออกก่อนที่จะใช้งาน
// This example requires the ID value to be a 5 digit number
$ app -> route ( ' /example/{id:regex=^[0-9]{5}$} ' , function ( $ params ) use ( $ app ) {
echo $ params [ ' id ' ];
});
// This example requires the ID to be lower or uppercase letters between 1-10 characters long
$ app -> route ( ' /example/{id:regex=^[a-zA-Z]{1,10}$} ' , function ( $ params ) use ( $ app ) {
echo $ params [ ' id ' ];
}); $ app -> route ( ' /example ' ); บางครั้งแอพของคุณจะมีเส้นทางจำนวนมากและคุณควรจัดระเบียบเป็นไฟล์แยกต่างหากกว่าที่มีทั้งหมดในไฟล์ routes.php
หากคุณลงทะเบียนเส้นทางเช่นนี้ MVPHP จะค้นหาไฟล์ที่มีความสัมพันธ์ที่มีชื่อเดียวกันในไดเรกทอรี controllers ในตัวอย่างข้างต้นเส้นทางที่ลงทะเบียนไปยัง /example จะค้นหาไฟล์ example.php ในไดเรกทอรีคอนโทรลเลอร์และต้องการ
ตอนนี้คุณสามารถลงทะเบียนเส้นทางเพิ่มเติมที่เกี่ยวข้องกับจุดสิ้นสุด /example ในไฟล์ example.php ตัวอย่างเช่นไฟล์ controllers/example.php ของคุณอาจมีลักษณะเช่นนี้:
// Reiterate this route and do something with it this time
$ app -> route ( ' /example ' , function () use ( $ app ) {
// Do stuff
});
// Register any other related route endpoints here
$ app -> route ( ' /example/stuff ' , function () use ( $ app ) {
// Do stuff
});หากคุณต้องการใช้ไฟล์เฉพาะที่มีชื่ออื่นเพียงแค่ระบุว่าเป็นพารามิเตอร์ที่สอง:
$ app -> route ( ' /example ' , ' myfile ' ); สิ่งนี้จะพยายามที่จะต้องใช้ controllers/myfile.php
แนวคิดของเส้นทางคอนโทรลเลอร์และแบบจำลองมีการกำหนดไว้อย่างหลวม ๆ ในกรอบนี้ เราหลีกเลี่ยงการใช้คลาสที่แตกต่างกันเพื่อเห็นแก่ความเรียบง่าย คอนโทรลเลอร์ในบริบทของเฟรมเวิร์กนี้ควรเป็นสถานที่สำหรับเป็นสื่อกลางระหว่างคำขอและฟังก์ชั่นที่กำหนดโมเดล
ดูไฟล์ในไดเรกทอรี controllers สำหรับตัวอย่าง
เราสามารถทดสอบวิธีการร้องขอที่แตกต่างกันโดยใช้วิธี action :
$ app -> route ( ' /example ' , function () use ( $ app ){
if ( $ app -> action ( ' post ' ) ) {
// Do stuff on POST
} elseif ( $ app -> action ( ' get ' ) ) {
// Do stuff on GET
}
}); เทมเพลตมุมมองจะถูกเก็บไว้ในไดเรกทอรี views เราสามารถเรียกมุมมอง (โดยปกติจากคอนโทรลเลอร์) เช่นนี้:
$ app -> view ( ' my-template ' ); สิ่งนี้มองหา my-template.php ในโฟลเดอร์ Views และต้องใช้ไฟล์ หากเรามีตัวแปรในไฟล์เทมเพลตเราต้องส่งผ่านสิ่งเหล่านั้นไปยังวิธีการดูเช่นนี้:
$ my_var1 = ' Stuff I want to echo in the template. ' ;
$ app -> view ( ' my-template ' , [
' my_var1 ' => $ my_var1
]); ตอนนี้ $my_var1 จะสามารถเข้าถึงได้ภายในไฟล์เทมเพลตมุมมอง
เราไม่ต้องกังวลกับเอ็นจิ้นเทมเพลต (เพราะ PHP เป็น ภาษาเทมเพลตโดยเนื้อแท้) เพียงแค่เข้าถึง varialbes ใน html ของคุณเช่นนี้:
< p > < ?=$my_var1;? > </ p >งบเงื่อนไข:
< ?php if ( isset($my_var1) ):? >
< p > < ?=$my_var1;? > </ p >
< ?php endif;? >คุณได้รับความคิด เทมเพลต PHP บริสุทธิ์และเรียบง่าย
โดยค่าเริ่มต้นส่วนหน้าจะใช้ bootstrap คุณสามารถค้นหาไฟล์ต้นฉบับทั้งหมดในไดเรกทอรี frontend คำแนะนำในการสร้างไฟล์ต้นฉบับจากโฟลเดอร์ frontend ถูกกำหนดไว้ในไฟล์ gulpfile.js ในรูทโครงการ
เมื่อคุณเรียกใช้ gulp เป็นครั้งแรกในรูทของโครงการไฟล์ SCSS และ JavaScript ถูกรวมเข้าด้วยกัน, minified, คัดลอกไปยังโฟลเดอร์ public ไฟล์ผู้ขาย JS และ CSS ที่เราใช้ (jQuery, bootstrap ฯลฯ ) ถูกคัดลอกไปยังโฟลเดอร์ public
ก่อนแก้ไขไฟล์ SCSS และ JavaScript ในไดเรกทอรี frontend คุณสามารถเรียกใช้ gulp watch ในรูทโครงการ Gulp จะดูการเปลี่ยนแปลงใด ๆ ที่คุณบันทึกลงในไฟล์และบันทึกไว้ตามที่คุณไป
คลาส models/Documents.php มีวิธีหนึ่งในการเขียนไฟล์ PDF จากแหล่ง HTML คลาสนี้ใช้ WKHTMLTOPDF และอาจทำให้คุณต้องติดตั้งการอ้างอิงเหล่านี้ก่อนที่จะใช้งานได้:
sudo apt-get install xfonts-base xfonts-75dpi urw-fonts
PDF เพิ่มเติมและฟังก์ชั่น "เอกสาร" อื่น ๆ ที่เกี่ยวข้องจะถูกเพิ่มในอนาคต
ขุดลึกลงไปในวิธียูทิลิตี้อื่น ๆ ที่มีอยู่โดยดูที่ไฟล์ models/MVPHP.php ซึ่งมีคลาสหลักของเรา จะเพิ่มมากขึ้นในอนาคต!