เวอร์ชัน 2.0.2-2024-12-13
เฟรมเวิร์กการใช้งานเว็บอย่างง่ายที่ใช้รูปแบบสถาปัตยกรรมแบบจำลองมุมมอง (MVC) (MVC)
composer require "simplesamlphp/simplesamlphp:^2.2" )UMVC รองรับโมดูลดูการกำหนดค่า/ส่วนประกอบ
เฟรมเวิร์กรองรับการทดสอบการทำงานด้วยปลั๊กอินเฟรมเวิร์ก codeception ที่ติดตั้งทั่วโลกจะต้องเข้ากันได้กับต้องการ (ปัจจุบัน v3.1.2)
UMVC รองรับ CLI คุณสามารถสร้างคำสั่งของคุณเอง คำสั่งในตัวคือ:
เรียกใช้คำสั่งเป็น php app $command $action $parameters
เฟรมเวิร์กสามารถรวมอยู่ในโครงการของคุณด้วยนักแต่งเพลง Run composer require uhi67/umvc:dev-master ใหม่สามารถสร้างโครงการที่ว่างเปล่าได้โดยใช้ composer create-project --prefer-dist uhi67/umvc-app name สิ่งนี้จะช่วยให้คุณมีแอปพลิเคชันที่ว่างเปล่าใหม่โดยใช้ UMVC Framework ลงในไดเรกทอรีที่มีชื่อ เลือกชื่อที่คุณต้องการ
คำเตือน: ส่วนนี้อยู่ระหว่างการก่อสร้าง เรียนรู้เพิ่มเติมเกี่ยวกับคลาสที่กล่าวถึงในการจัดวางของนิยามคลาส
composer.json ของแอปพลิเคชันของคุณและรวมถึง uh67/umvc , EG composer init --name myname/myapp --require uhi67/umvc:*composer updatevendor/uh67/umvc/app ไปยังรูทของแอปพลิเคชันของคุณ นี่คือตัวเรียกใช้คำสั่ง CLIvendor/uh67/umvc/www/index.php และ .htaccess ไปยังไดเรกทอรี www ของแอปพลิเคชันของคุณ นี่คือเราเตอร์ของเว็บอินเตอร์เฟสconfig/config.php ดูเทมเพลตใน vendor/uh67/umvc/config/config-template.phpruntime เขียนโดยเว็บเซิร์ฟเวอร์เพื่อวางไฟล์ชั่วคราวwww/assets ที่เขียนโดยเว็บเซิร์ฟเวอร์เพื่อวางไฟล์สินทรัพย์ที่แคชของส่วนประกอบต่างๆ controllers DIR โดยใช้ appcontrollers เนมสเปซและรับมาจาก uhi67umvcControllerviews DIR ในรูปแบบ PHTML อย่างง่ายและจัดระเบียบตามโครงสร้าง views/controller/action.phpmodels โมเดลฐานข้อมูลคือ uhi67umvcModel , โมเดลฐานข้อมูล-น้อยคือ uhi67umvcBaseModel migrationsviews/layouts มุมมองสามารถโทรหามุมมองบางส่วนอื่น ๆcommands ที่ได้มาจากคลาส uhi67umvcCommand มีคำสั่งในตัวในกรอบ คำสั่ง php app แสดงคำสั่งที่มีอยู่ทั้งหมดทั้งในตัวและแบบกำหนดเองmessges/la.php โดยที่ "la" เป็นภาษาที่คุณต้องการแปล ส่วนประกอบทั้งหมดคลาส UMVC ส่วนใหญ่รวมถึงคลาสแอพหลักเองคือ A uhi67umvcComponent Component ใช้คุณสมบัติ คุณสมบัติ : Magic Getter และ Setter ใช้วิธี GetProperty และ SetProperty Component สามารถ กำหนดค่าได้ : ตัวสร้างยอมรับอาร์เรย์การกำหนดค่าที่มีค่าสำหรับคุณสมบัติสาธารณะ
MySqlConnection - เพื่อเชื่อมต่อกับฐานข้อมูล รวมถึง Builder SQL Query ปัจจุบันการใช้งาน Connection เพียงอย่างเดียวFileCache - การใช้งาน CacheInterface เพียงอย่างเดียวSamlAuth - การใช้งานเพียงอย่างเดียวสำหรับ AuthManagerL10n การแปลแบบง่าย ๆ , เริ่มต้นอัตโนมัติเริ่มต้น, แปลข้อความ UMVC เท่านั้นL10nFile การแปลตามไฟล์เพื่อแปลข้อความของแอปพลิเคชันของคุณ Form -วิดเจ็ตที่มีมุมมองในตัวเพื่อแสดงและประมวลผลรูปแบบ HTML โดยใช้โมเดลของคุณGrid (วิดเจ็ต แต่มุมมองในตัวยังคงหายไป)-เพื่อแสดงรายการโมเดลที่ถูกกรองQuery - แสดงถึงการสืบค้น SQL แบบ parametrized และยืดหยุ่นในโครงสร้าง PHP คำสั่ง SQL สามารถสร้างได้จากมันRequest - แสดงถึงคำขอ HTTP สามารถใช้เพื่อดึงข้อมูล GET และ POST พารามิเตอร์Session - หมายถึงเซสชัน PHP ปัจจุบันสามารถใช้เพื่อรับและตั้งค่าตัวแปร สคริปต์รายการเดียวสำหรับเว็บแอปพลิเคชันคือ www/index.php ตามลำดับสคริปต์รายการเดียวสำหรับแอปพลิเคชัน CLI คือไฟล์ app ทั้งคู่จะต้องคัดลอกลงในไดเรกทอรีแอปพลิเคชันของคุณจาก vendor/uhi67/umvc/ ไดเรกทอรี
กฎ www/.htaccess เปลี่ยนเส้นทางคำขอที่ไม่พบทั้งหมดไปยัง www/index.php อย่างไรก็ตามสินทรัพย์คงที่จะเสิร์ฟโดยตรงจากไดเรกทอรี WWW เรียนรู้เพิ่มเติมเกี่ยวกับการให้บริการสินทรัพย์ห้องสมุดในภายหลัง
index.php เริ่มต้น AutoLoader โหลดการกำหนดค่าหลักสร้างวัตถุหลัก (คลาสที่กำหนดไว้ในการกำหนดค่าโดยปกติแล้ว uhi67/umvc/App หรือ Descendant) การกำหนดค่าหลักเป็นไปตามกฎของ Component ที่กำหนดค่าได้
URL ทั้งหมดที่เกิดขึ้นเป็น https: // myapp/acontroller/anaction ถูกประมวลผลด้วยวิธีต่อไปนี้:
uhi67/umvc/App แยกวิเคราะห์คำขอคำนวณคลาสคอนโทรลเลอร์จริง (มาจาก uhi67/umvc/Controller ) เพื่อใช้สร้างคอนโทรลเลอร์และเรียกใช้วิธีการดำเนินการที่ร้องขอ ดังในตัวอย่างข้างต้น Acontroller อ้างถึงคลาสคอนโทรลเลอร์ของคุณในไดเรกทอรี controllers ของคุณเป็น AcontrollerController และ ANACTION หมายถึงวิธีการกระทำ (เป็น ActionAnAction )
หากชื่อแอ็คชั่นหายไปจาก URL actionDefault จะถูกเรียกใช้ หากชื่อคอนโทรลเลอร์หายไปเช่นกันจะใช้ MainController ที่กำหนดค่าไว้ นอกจากนี้ยังเป็นไปได้ที่จะสร้าง URL ด้วยชื่อการกระทำของคอนโทรลเลอร์เริ่มต้นโดยไม่ระบุชื่อคอนโทรลเลอร์ - ข้อ จำกัด เพียงอย่างเดียวที่คุณไม่สามารถมีคอนโทรลเลอร์ที่มีชื่อเดียวกับการกระทำนี้
คำสั่ง Al CLI ที่เกิดขึ้นเป็น php app acontroller/anaction ถูกประมวลผลวิธีต่อไปนี้:
uhi67/umvc/App แยกวิเคราะห์คำขอคำนวณคลาสคอนโทรลเลอร์จริง (มาจาก uhi67/umvc/Command ) เพื่อใช้สร้างคอนโทรลเลอร์และเรียกใช้วิธีการดำเนินการที่ร้องขอ ดังในตัวอย่างข้างต้น Acontroller อ้างถึงคลาสคอนโทรลเลอร์ของคุณในไดเรกทอรี commands ของคุณเป็น AcontrollerController และ ANACTION หมายถึงวิธีการกระทำ (เป็น ActionAnAction ) คำสั่งในตัวสามารถเรียกใช้ในลักษณะเดียวกัน คำสั่งที่มีชื่อเดียวกันในแอปพลิเคชันของเราแทนที่คำสั่งในตัว
ส่วนของคำขอ URL ปัจจุบันสามารถเข้าถึงได้เป็น:
ในการสร้าง URL ใหม่โดยใช้ชื่อคอนโทรลเลอร์และแอ็คชั่นและพารามิเตอร์ OptioAnl Qurey ให้ใช้หนึ่งในสิ่งต่อไปนี้:
ในไฟล์มุมมองของคุณคุณสามารถอ้างอิงสินทรัพย์คงที่ของคุณที่อยู่ภายใต้ไดเรกทอรี www ในแบบคงที่เช่น <link href="/assets/css/app.css" rel="stylesheet"> ในทางตรงกันข้ามหากคุณต้องการอ้างถึงไฟล์สินทรัพย์ที่อยู่ที่ไหนสักแห่งในห้องสมุดผู้ขายที่สร้างขึ้นจากนักแต่งเพลงคุณสามารถใช้พวกเขาด้วยวิธีนี้:
<script src="<?= $this->linkAssetFile('npm-asset/bootstrap/dist', 'js/bootstrap.bundle.min.js') ?>"></script> ฟังก์ชั่น linkAssetFile คัดลอกไฟล์ทั้งหมดจากไดเรกทอรีในอาร์กิวเมนต์แรกลงในไดเรกทอรีแคชสินทรัพย์ภายใต้ www และสร้าง URL ที่ถูกต้องไปยังไฟล์ int ของอาร์กิวเมนต์ที่สอง หมายเหตุ: อาร์กิวเมนต์แรกระบุแพ็คเกจสินทรัพย์ เฉพาะการโทรครั้งแรกสำหรับแพ็คเกจใด ๆ คัดลอกไฟล์ การโทรที่ตามมาทั้งหมดไปยังแพ็คเกจเดียวกันจะสร้างลิงค์สำหรับไฟล์เท่านั้น
แคชสินทรัพย์จะถูกเทลงโดยคำสั่ง composer install แคชสินทรัพย์เป็น www/asset/cache เสมอและไม่สามารถกำหนดค่าได้
-
พื้นที่เก็บข้อมูลนี้มีแอปพลิเคชันทดสอบในตัวสำหรับการทดสอบหน่วย codeception ภายใน วัตถุประสงค์เดียวของแอพทดสอบในไดเรกทอรี tests คือการสามารถเรียกใช้การทดสอบหน่วยและไม่ใช่แอปพลิเคชันตัวอย่างที่จะเริ่มต้นด้วย
git clonecomposer updatetests/_data/test-config.php ตามเทมเพลตumvc-test ตามการตั้งค่าฐานข้อมูลใน tests/_data/test-config.phpphp vendor/bin/codecept run unit สำหรับการทดสอบหน่วยการทดสอบหน่วยเพิ่มเติมกำลังจะมา ...
สภาพแวดล้อมการทดสอบ Dockerized ในตัวสามารถใช้เพื่อทดสอบกับ PHP และฐานข้อมูลที่แตกต่างกัน
ขั้นตอน:
tests/docker-compose.yml (สร้างโคลนของไฟล์เทมเพลตนี้)tests/docker/Dockerfile (ขั้นตอนการติดตั้งส่วนขยายอาจเปลี่ยนไป)tests/.envdocker compose up --build -d (ใน tests DIR)docker exec -it umvc-php-1 php vendor/bin/codecept run unit