[สัมมนา] [Kohana: น้ำหนักเบากรอบ PHP] [แบรนดอนหลิว] [ฮาร์วาร์มหาวิทยาลัย] [นี้เป็น CS50.] [CS50.TV] สวัสดีทุกคน ชื่อของฉันคือแบรนดอน ผมจูเนียร์ที่นี่ที่วิทยาลัยการทำวิทยาการคอมพิวเตอร์และวันนี้เรากำลังจะพูดคุยเกี่ยวกับ Kohana ซึ่งเป็นกรอบการพัฒนาเว็บ PHP วันนี้เป็นไปได้การสัมมนาการเข้ารหัสสด ดังนั้นฉันโดยทั่วไปจะใช้จ่ายประมาณ 5-10 นาทีอธิบายสิ่งที่ Kohana คือ และแล้วฉันอย่างแท้จริงจะสร้างบล็อกที่ง่ายสุด สำหรับคุณที่นี่อย่างแท้จริงตั้งแต่เริ่มต้น เรากำลังจะดาวน์โหลดโค้ดจากเว็บไซต์ Kohana, และเรากำลังจะเริ่มต้นสร้างบล็อกและหวังว่ามันจะให้คำแนะนำมาก เพราะคุณอาจจะเห็นบางทีฉันอาจจะทำผิดพลาดบางอย่าง และคุณจะเห็นฉันกู้คืนจากพวกเขา หรือคุณจะเห็นกระบวนการคิดของฉันเป็นฉันสร้างผ่านบล็อกนี้ และในขณะเดียวกันคุณยังจะได้รับคุ้นเคยกับกรอบตัวเอง หวังว่ามันจะให้คำแนะนำการออกกำลังกายมาก ก่อนว่าสิ่งที่เป็นกรอบหรือไม่ หากคุณได้รับการ CS50 จนถึงคุณยังไม่ได้ทำงานจริงๆกับใด ๆ กรอบยังและสิ่งที่เป็นนี้ คุณอาจจะได้ทำ 1 pset การพัฒนาเว็บอยู่แล้ว และสมมติว่าคุณยังคงสร้างเว็บไซต์และให้การสร้างเว็บไซต์ คุณจะเริ่มสังเกตเห็นบางสิ่งที่ สิ่งแรกที่คุณจะสังเกตเห็นว่าคุณอาจจะทำสิ่งเดียวกัน ซ้ำแล้วซ้ำอีกตลอดเวลา สิ่งที่ต้องการทำความสะอาดป้อนข้อมูลของผู้ใช้ สิ่งที่ต้องการจัดระเบียบไฟล์ของคุณในทางหนึ่ง สิ่งอื่น ๆ ที่คุณอาจจะยังสังเกตเห็นว่ารหัสของคุณ อาจจะเริ่มต้นที่จะเป็นมากยุ่งมาก และคุณอาจจะปล่อยให้มันยุ่งและก็มีช่วงเวลาที่ยากมากในการรักษานั้น หรือคุณอาจจะเริ่มต้นโครงสร้างรหัสของคุณและทำให้มันเป็นแบบแยกส่วน ในวิธีการบางอย่างเพื่อให้มันบำรุงรักษามากขึ้น นี่คือที่กรอบเว็บพื้นเข้ามา คนเหล่านี้ที่ได้สร้างจำนวนมากของเว็บไซต์ที่พวกเขากล่าวว่า "เราไม่จำเป็นต้องทำซ้ำนี้ทุกครั้งเดียวที่เราสร้างเว็บไซต์." "ทำไมเราไม่เพียงแค่ทำให้แพคเกจที่ทำสิ่งเหล่านี้สำหรับคุณ ทุกเวลาเดียวที่คุณต้องการที่จะสร้างเว็บไซต์ได้อย่างไร " และเพื่อที่ว่าเมื่อคุณทำเว็บไซต์ใหม่ คุณเพียงแค่มุ่งเน้นไปที่สิ่งที่ว่าเว็บไซต์นี้โดยเฉพาะอย่างยิ่งเป็นเรื่องเกี่ยวกับ คุณไม่จำเป็นต้องทำซ้ำทุกการกำหนดค่าต่างๆ และการแยกของรหัสและรหัสการเขียนใหม่ ที่คุณมักจะต้องทำเมื่อคุณกำลังทำเว็บไซต์ ความคิดก็คือกรอบช่วยให้คุณสามารถเขียนรหัสในระดับที่สูงขึ้น โดยไม่ต้องกังวลเกี่ยวกับรายละเอียดในระดับที่ต่ำกว่า รายละเอียดในระดับที่ต่ำกว่าอาจจะมีสิ่งที่ต้องการ จัดการกับการป้อนข้อมูลของผู้ใช้ในการทำความสะอาด นั่นคือสิ่งที่คุณไม่ควรจริงๆต้องกังวลเกี่ยวกับ คุณควรมุ่งเน้นไปที่สิ่งที่จัดสรรเว็บของคุณเป็นจริงเกี่ยวกับ มันลดมากรหัสสำเร็จรูป มันเป็นสถาปัตยกรรมสำหรับโครงการของคุณ นิยมมากที่สุดจะเป็น Model-View-Controller, ซึ่งฉันจะพูดคุยเกี่ยวกับในครั้งที่สอง และหลายครั้งกรอบเหล่านี้รวบรวมชุดของขั้นตอนที่ กฎระเบียบและการปฏิบัติที่ดีที่สุดสำหรับคุณที่จะใช้ เพื่อที่ว่าเมื่อคุณนำมาใช้กรอบเว็บ คุณต้องเขียนรหัสของคุณในวิธีการบางอย่าง และก็มักจะตกลงกันชุดของหลักการ โดยชุมชนที่ได้รับการยอมรับโดยทั่วไปจะเป็น วิธีที่ดีของการเขียนโค้ด มันทำให้รหัสของคุณบำรุงรักษามากขึ้นใช้งานได้มากขึ้น อื่น ๆ และอื่น ๆ และในที่สุดสิ่งที่ผมอยากจะเน้นเกี่ยวกับกรอบ เมื่อเทียบกับห้องสมุดเป็นความคิดเกี่ยวกับการรักร่วมเพศของการควบคุมนี้และสิ่งที่เป็นนี้ ความแตกต่างระหว่างห้องสมุดและกรอบเป็นที่ที่มีห้องสมุด คุณยังคงเขียนโปรแกรมหลัก และคุณกำลังจัดเรียงของการเรียกห้องสมุด และเรียกร้องให้ห้องสมุดที่จะทำบางสิ่งบางอย่างสำหรับคุณ ความแตกต่างระหว่างห้องสมุดและกรอบ คือกรอบเริ่มออกไปกับการควบคุม และมันจะเรียกรหัสของคุณ เพื่อให้คุณสามารถคิดว่ามันเป็น - นี่คือเหตุผลว่าทำไมจึงเรียกว่ากรอบ - กรอบให้กรอบนี้และโครงสร้างรหัสของคุณ และคุณกรอกข้อมูลลงในหลุมที่ และเรื่องนี้จะกลายเป็นชัดเจนมากขึ้นในการที่สอง เมื่อคุณเห็นฉันเริ่มต้นในการเขียนโค้ดในบริบทของกรอบ คุณจะเห็นว่าฉันกรอกในช่องว่างที่ และกรอบเป็นชนิดของการควบคุมทุกชิ้นย้าย และฉันต้องวางชิ้นในสถานที่ที่เหมาะสม วันนี้เรากำลังจะพูดคุยเกี่ยวกับ Kohana, ซึ่งเป็นหนึ่งในหลายกรอบ PHP มีกรอบเว็บและมีคนที่มีในเกือบทุกภาษาเดียว และฉันเลือกเพราะ Kohana Kohana เป็น arguably และเป็นที่ยอมรับโดยทั่วไปว่าเป็นวิธีที่ง่ายที่สุดกรอบ PHP ที่จะรับ มันมีน้ำหนักเบาที่สุด มีคนอื่น ๆ ออกมีที่มาพร้อมกับหลายคุณสมบัติอื่น ๆ อีกจำนวนมาก แต่พวกเขามีแนวโน้มที่จะเป็นเรื่องยากมากขึ้นในการรับ และสุดท้าย Kohana ใช้สถาปัตยกรรม มันเบาพอที่เราอย่างแท้จริงสามารถสร้างโครงการ ที่นี่อยู่ตรงหน้าของดวงตาของคุณและคุณสามารถสวยมาก ทำตามพร้อมสวยได้อย่างง่ายดาย สถาปัตยกรรมคืออะไร มันหมายถึง Model-View-Controller, และบางทีถ้าคุณคิดเกี่ยวกับรหัสที่คุณได้รับการเขียนเพื่อให้ห่างไกล สำหรับบางส่วนของ psets พัฒนาเว็บของคุณ คุณอาจจะสามารถที่จะเห็นบางส่วนของนี้ แต่โดยปกติเมื่อคุณเริ่มต้นการเขียน โปรแกรมเว็บที่ซับซ้อนมากขึ้น แบ่งระหว่างทั้ง 3 ส่วนจะมากขึ้นและชัดเจนมากขึ้น ฉันวาง MVC การจัดเรียงของที่นี่เป็นกองที่ และบ่อยครั้งที่คุณจะได้ยินคนพูดคุยเกี่ยวกับกองในการพัฒนาเว็บ และนี้คือการแสดงให้เห็นถึงความคิดที่ว่า แต่ละชั้นแต่ละองค์ประกอบจริงๆพยายามที่จะติดต่อสื่อสารเท่านั้น ระหว่าง 2 ส่วนประกอบอื่น ๆ คนที่เข้าถึงเว็บไซต์ของคุณเป็นลูกค้าหรือเบราว์เซอร์ พวกเขามีปฏิสัมพันธ์กับโปรแกรมของคุณรหัสผ่านมุมมอง รหัสดูการโต้ตอบกับตัวควบคุม ควบคุมการโต้ตอบกับรูปแบบที่ และรูปแบบการโต้ตอบกับฐานข้อมูล และมีการกระโดดในระหว่างที่ไม่มีถ้าคุณเขียนรหัสของคุณอย่างถูกต้อง สิ่งใดที่สิ่งเหล่านี้จะทำอย่างไร รูปแบบที่เป็นหลักเป็นชิ้นส่วนของรหัสที่เกี่ยวข้องกับข้อมูลของคุณ อะไรที่เกี่ยวข้องกับฐานข้อมูลของคุณกับวัตถุที่คุณเก็บ หรือเรียกวัตถ​​ุเหล่านั้นในฐานข้อมูล ที่จัดการโดยรูปแบบ บางทีคุณอาจมีวัตถุในฐานข้อมูลของคุณ เรากำลังจะสร้างรูปแบบที่มีจะทำอย่างไรกับการโพสต์, เพื่อโพสต์อาจจะมีคุณลักษณะบางอย่างกับมัน คุณอาจจะมีฟังก์ชั่นการจัดเก็บรอบการโพสต์เหล่านั้นหรือเรียกการโพสต์ หรือการกรองการโพสต์และอื่น ๆ และอื่น ๆ และนั่นคือทั้งหมดรหัสที่จัดการโดยรูปแบบ ควบคุมการจัดเรียงของตรรกะโปรแกรม และหลายสิ่งหลายอย่างที่แตกต่างกันสามารถไปในตรรกะโปรแกรม หากคุณกำลังพูดคุยกับ API ที่แตกต่างกัน ที่อาจจะมีที่คุณจัดการกับตรรกะโปรแกรม ถ้าคุณกำลังพยายามที่จะต้องนำข้อมูลจากแบบจำลองที่แตกต่างกันหลาย และมีการรวมพวกเขาในทางใดทางหนึ่งที่มักจะได้รับการจัดการโดยคอนโทรลเลอร์ ตัวอย่างเช่นใน Facebook, ถ้าคุณเพื่อนใครสักคน แล้วบางทีการกระทำของการสร้างความสัมพันธ์ที่ว่า อาจทำได้โดยการควบคุม และสุดท้ายมุมมองที่เป็นรหัสที่สร้างสิ่งที่คุณเห็นจริง หลายครั้งที่ฉันคิดว่าใน psets CS50 พวกเขาไม่ได้จริงๆขอแนะนำให้คุณผู้ชายที่จะแยกสิ่งเหล่านี้ 3 คุณอาจจะมีขนาดใหญ่แฟ้มยาวนี้ที่ด้านบน คุณทำให้บางแบบสอบถามและอาจจะดำเนินการบางอย่าง กับข้อมูลที่คุณเรียกข้อมูลจากฐานข้อมูล แล้วคุณมี HTML ของคุณที่ด้านล่าง และคุณอาจพบว่าในขณะที่คุณสร้างหน้ามากขึ้นและมากขึ้น ที่คุณกำลังจะต้องทำซ้ำรหัสบางส่วนและยัง สิ่งที่เป็นไฟล์ของคุณได้รับจริงๆขนาดใหญ่และยาว และจะกลายเป็นเทอะทะในการจัดการ เหตุผลว่าทำไม MVC จึงได้รับการยกย่องเป็นอย่างดี สำหรับจำนวนเหตุผล สิ่งแรกคือสิ่งที่เรียกว่าการแยกของความกังวล ซึ่งเป็นความคิดที่ว่าเมื่อคุณมี - นึกคิด 1 ชิ้นส่วนของรหัสควรจะทำสิ่งที่ 1 และทำมันได้ดีจริงๆ และคุณไม่ควรรวมชิ้นส่วนของรหัสที่ทำสิ่งที่แตกต่างกัน ตัวอย่างเช่นดูรหัสและรหัสรุ่น พวกเขาไม่ได้จริงๆจะต้องเกี่ยวข้อง พวกเขาไม่ได้ที่จะอยู่ในไฟล์เดียวกันดังนั้นเมื่อคุณสามารถแยกพวกเขาออก ดังนั้นจึงเป็นเรื่องง่ายต่อการรักษา สิ่งอื่น ๆ นำมาใช้รหัส คุณอาจพบว่าตัวเองเขียนแบบสอบถามเดียวกันหรือทำ คำสั่งที่คล้ายกันที่อาจจะแยกเป็น 1 ฟังก์ชั่น และนั่นคือความคิดที่อยู่เบื้องหลังรูปแบบและควบคุม มีในฟังก์ชั่นที่แยกต่างหากที่คุณสามารถนำมาใช้ในสถานที่ที่แตกต่างกันในโครงการของคุณ และสุดท้ายที่ผูกติดอยู่กับการอบแห้งรหัสของคุณ หรือไม่ทำซ้ำตัวเองไม่ซ้ำตัวเอง นี่คือการเข้าใจในการพัฒนา เมื่อใดก็ตามที่คุณสามารถที่คุณไม่ต้องการที่จะทำซ้ำตัวเองเพราะถ้าคุณทำซ้ำตัวเอง  มันมากขึ้นค่าใช้จ่ายในการรักษา ถ้าคุณต้องการที่จะเปลี่ยน 1 สิ่งที่คุณจะต้องเปลี่ยนทุก และที่นำไปสู่​​ข้อผิดพลาดและเป็นที่น่ากลัว ขวาทั้งหมด คำถามใด ๆ เพื่อให้ห่างไกลเกี่ยวกับ Kohana ที่ทั้งหมดหรือไม่ ยิ่งใหญ่ ตอนนี้เรากำลังจะไปดำน้ำในเซสชั่นการเข้ารหัสสด และหวังว่าทุกอย่างเป็นไปด้วยดี ฉันจะสร้างเว็บไซต์โดยทั่วไปนี้ บนเซิร์ฟเวอร์ระยะไกลของฉันและวิธีการที่พวกคุณยังสามารถที่ โปรดดูที่เว็บไซต์และการเข้าถึงเว็บไซต์ที่ และสภาพแวดล้อมที่ดีกว่าที่กำหนดค่ากว่าเครื่องระยะไกลของฉัน เพราะใช้ Linux แทน OS X. แท้จริงเรากำลังจะเริ่มต้น KohanaFramework.org ฉันจะดาวน์โหลดโค้ดจากเว็บไซต์ ฉันจะคัดลอกที่อยู่ลิงค์ ไปที่เซิร์ฟเวอร์ของฉันดาวน์โหลดได้ และฉันจะดึงมัน [นักศึกษา] สิ่งที่เป็นที่ใหญ่ที่สุดที่คุณสามารถทำให้ข้อความหรือไม่ [แบรนดอนหลิว] คือการที่ดีขึ้นหรือไม่ [นักศึกษา] ที่เป็น doable? [แบรนดอนหลิว] ใช่ว่าดี ผมดาวน์โหลดไฟล์ ZIP และซิปที่เป็นไดเรกทอรีที่เรียกว่า Kohana, และเรากำลังจะเปลี่ยนชื่อที่ CS50-Kohana, และขอไปค่ะ น่ากลัว ที่นี่คุณจะเห็นพวงของไฟล์ที่แตกต่างกัน ส่วนใหญ่ของคุณสามารถละเลย - we're ไม่ไปผ่านทุกไฟล์เดียวที่อยู่ในที่นี่ เนื่องจากข้อ จำกัด เวลาของเรา แต่โดยทั่วไปเมื่อคุณติดตั้ง Kohana, สิ่งแรกที่คุณทำ คือคุณไปที่ไดเรกทอรี และคุณโดยทั่วไปจะทำแบบทดสอบสภาพแวดล้อมบางอย่างและ whatnot เพื่อให้แน่ใจว่าสภาพแวดล้อมของคุณมีการตั้งค่าอย่างถูกต้องในการทำงาน Kohana และทำให้แน่ใจว่าทุกอย่างถูกต้อง คุณสามารถมองเห็นสิ่งที่ส่วนใหญ่ผ่านไป แต่โดยทั่วไปมักจะใช้เป็นที่ 1 ปัญหานี้ ที่บ่นว่าไดเรกทอรีบางอย่างไม่ได้เขียน และว่าเป็นเพราะของสิทธิ์บางอย่าง ผมไม่ทราบว่าเท่าไหร่ที่พวกคุณได้เรียนรู้เกี่ยวกับสิทธิ์ของแฟ้มใน CS50, แต่ถ้าคุณทำพัฒนาเว็บที่คุณจะทำงานในเรื่องนี้มาก ฉันจะทำให้มันสามารถเขียนได้ และผมคิดว่าผมยังมี - มีที่เราไป Okay ดังนั้นตอนนี้คุณสามารถเห็นทุกอย่างผ่านไป และตอนนี้ก็จะบอกคุณที่จะเปลี่ยนชื่อไฟล์ install.php ฉันจะย้ายไฟล์ install.php เพื่อ installed.php, และตอนนี้ถ้าผมรีเฟรช มันทำให้ฉันมีข้อผิดพลาดบางอย่างและนี่คือที่การแก้จุดบกพร่องมา ซึ่งเป็นที่ที่คุณสามารถมองเห็นสิ่งที่เป็นจริงที่จะเกิดขึ้น สิ่งที่เป็นตามค่าเริ่มต้น Kohana สันนิษฐานว่า โครงการของคุณที่ไดเรกทอรีรากของโดเมนของคุณ ดังนั้นจึงคาดหวังว่าคุณจะเป็นที่ demo.brandonkliu.com เราต้องบอกว่ามันเป็นจริงในโฟลเดอร์ย่อย มันอยู่ในโฟลเดอร์ย่อยที่เรียกว่า CS50 Kohana สิ่งที่เป็นก็ตีความ CS50-Kohana เป็นอย่างอื่นที่ฉันจะอธิบายให้คุณในที่สอง แต่ผมจะบอกคุณว่าเป็นสิ่งที่เป็นที่คาดหวัง สิ่งที่เรากำลังจะทำคือการที่เรากำลังจะไปลงในโฟลเดอร์ที่เรียกว่า bootstrap.php นี้ ซึ่งเป็นโฟลเดอร์การกำหนดค่าที่มากของสิ่งที่แตกต่างกันมีการตั้งค่า ฉันเปิดขึ้นมา จากนั้นก็อาจจะเป็นหนึ่งในสิ่งแรกที่ผมจะทำคือการเปลี่ยนโซนเวลา แล้วเรามาดู อ้าว! ขวาที่นี่ มีพวงของคำพูดการกำหนดค่าที่แตกต่างกันในที่นี่ แต่ฉันกำลังมองหาสิ่งที่เรียกว่า URL ที่ฐานนี้ โดยค่าเริ่มต้นและฉันได้รับมันตั้งค่าให้ Kohana, แต่ฉันจะเปลี่ยนที่ไป CS50-Kohana, และผมคิดว่าควรจะแก้ไขมัน ใช่ที่ดี โดยค่าเริ่มต้นที่จะเห็นว่ามันทำงานก็บอกว่า "Hello World." ที่ไม่ว่ามาจากไหน เราไม่ได้รับการ Hello World? ที่ว่าเป็นรหัสที่จริงเขียนว่า? เพื่อให้เข้าใจว่าผมจะแนะนำแนวคิดที่เรียกว่าเส้นทางนี้ สวยมากทุกกรอบเว็บมีแนวคิดที่เรียกว่าเส้นทาง ซึ่งเป็นชิ้นส่วนของซอฟต์แวร์ที่จะแมป URL ที่บาง ไปชิ้นหนึ่งของรหัสภายในกรอบการทำงานของคุณ ตัวอย่างเช่นถ้าคุณมี URL ที่บางและคุณจะไปยัง URL บางอย่างเช่น foo.com / บล็อก / ทั้งหมด แล้วสิ่งที่กรอบจะทำ - หรืออย่างน้อยสิ่งที่ Kohana จะไปทำ - มันจะหาชั้นเรียนที่เรียกว่าบล็อกของตัวควบคุม และก็จะต้องเรียกใช้ฟังก์ชั่นการตั้งชื่อการกระทำทั้งหมด ฉันรู้ว่าฉันพูดคุยเกี่ยวกับการเรียนและการทำงาน และฉันรู้ว่าพวกคุณยังไม่ได้ครอบคลุมการเรียนและการทำงาน ใน CS50 แต่สำหรับตอนนี้ คุณสามารถคิดของชั้นเรียนเช่นเดียวกับกลุ่มของฟังก์ชั่นที่ วิธีการจัดกลุ่มการทำงานร่วมกัน นั่นคือทั้งหมดที่คุณจำเป็นต้องรู้ ตอนนี้ถ้าเรามองไปที่โครงสร้างโฟลเดอร์ของเรา ในโฟลเดอร์โปรแกรมมีโฟลเดอร์อื่นที่เรียกว่าชั้นเรียน และโฟลเดอร์อื่น ๆ จะเรียกว่าควบคุมและรุ่น ถ้าคุณดูในโฟลเดอร์ควบคุมที่ เราจะเห็นว่ามีไฟล์ที่เรียกว่ายินดีต้อนรับ, และคุณสามารถเห็นที่นี่เป็นชั้นที่เรียกว่าควบคุมยินดีต้อนรับ, และมีฟังก์ชั่นที่เรียกว่าการดำเนินการของดัชนีที่ และสิ่งที่มันไม่เป็นมันชุดร่างกายของการตอบสนองของคุณเพื่อ Hello World นั่นคือสิ่งที่รหัสจะถูกเขียน คำถามอื่น ๆ ผมไม่ได้ไป blah, blah, blah, / ต้อนรับ / ดัชนี ฉันไม่สิ้นสุดนี่ได้อย่างไร ดีที่เป็นเพียงเพราะ ที่นี่ที่ด้านล่างของไฟล์บูตของเรา ที่เรากำหนดเส้นทางของเรา คุณจะเห็นว่าพวกเขาตั้งค่าเริ่มต้นบางอย่างสำหรับคุณ ควบคุมค่าเริ่มต้นคือยินดีต้อนรับคุณ การดำเนินการเริ่มต้นคือดัชนี นั่นเป็นเหตุผลที่เมื่อเราใส่อะไรอยู่ในนั้นมันจะไปควบคุมยินดีต้อนรับคุณ และการดำเนินการที่ดัชนี ทุกสิ่งที่ทำให้รู้สึกเพื่อให้ห่างไกล ตอนนี้คุณสามารถทำได้มากกว่าเพียงแค่ไปที่การควบคุม และการกระทำที่เฉพาะเจาะจง นอกจากนี้คุณยังสามารถส่งผ่านพารามิเตอร์ไปยังตัวควบคุม เพียงแค่เป็นตัวอย่าง ฉันจะเพิ่มการดำเนินการอื่นที่จะควบคุมนี้เพื่อแสดงให้คุณเห็น ขอเรียกการกระทำนี้สะท้อนเพราะมันจะบอกคุณในสิ่งที่คุณให้มัน และดังนั้นฉันโดยทั่วไปจะคว้า พารามิเตอร์ที่จะถูกส่งผ่านฉันไปยังโปรแกรมเส้นทาง และเป็นคุณสามารถดูที่นี่ บรรทัดนี้ที่นี่คุณจะเห็นว่า นี้โดยทั่วไปหมายความว่าคุณมีตัวควบคุมและคุณมี /, และคุณมีการดำเนินการและคุณมี / อื่น และที่จะเป็นพารามิเตอร์และเพราะเรามีชื่อ ID นี้ ภายในวงเล็บมุมซึ่งหมายความว่าเรากำลังตั้งชื่อ ID พารามิเตอร์นี้ ต่อมาในรหัสควบคุมของฉันหากฉันต้องการที่จะคว้าถือของพารามิเตอร์นั้น ฉันสามารถใช้รหัสที่ผมเขียนหาพารามิเตอร์ชื่อ ID นั่นคือสิ่งที่ผมทำที่นี่และฉันจะกลับมาและพูดว่า "คุณบอกว่า" ที่ และอื่น ๆ ตอนนี้ถ้าผมไปที่เว็บไซต์ของเรา ผมไป cs50-kohana/welcome/echo/Helloooo-- โอ้ที่เหมาะสม มีขั้นตอนที่ 1 ฉันซ้ายออกเป็น นี้เป็นส่วนหนึ่งของความคิดที่สดการเข้ารหัส นี่คือ 1 สิ่งที่ ลองมาดูกัน ดังนั้นตามปกติโดยเริ่มต้นที่มีจำนวนมากของการใช้งานเว็บเหล่านี้ คุณต้องมีสิ่ง index.php นี้อยู่ใน URL ของคุณ เพราะความคิดเป็น index.php เป็นประเภทของจุดเริ่มต้น ของโปรแกรมของคุณ แต่แน่นอน นั่นคือการจัดเรียงของที่น่ารำคาญที่จะมี คุณไม่ต้องการที่จะมี index.php ปรากฏใน URL ของคุณ และสวยมากทุกกรอบเว็บออกมาจากกล่อง มีปัญหา index.php นี้ และเพื่อให้คุณมีที่จะใช้มาตรการบางอย่างเพื่อจะเอาที่ และอื่น ๆ ในกรณีนี้ สิ่งที่เรากำลังจะทำคือเรากำลังจะใช้ไฟล์ที่เรียกว่า. htaccess, และนี่คือสิ่งที่เฉพาะเจาะจงไปยังเว็บเซิร์ฟเวอร์อาปาเช่ และสามารถทำสิ่งที่ต้องการเขียน URL ที่ และการเปลี่ยนเส้นทาง URL และอื่น ๆ และอื่น ๆ Kohana และเป็นสิ่งที่ดีพอที่จะให้ไฟล์มีแม่แบบ. ที่เราสามารถใช้ ในขณะที่คุณสามารถดูมีเป็นไฟล์ที่มีเรียกว่า example.htaccess, และเรากำลังจะคัดลอกที่. htaccess ฉันจะเปิดนี้และแก้ไข และพื้นมันไม่พวงของสิ่งที่แตกต่างกัน สายสำคัญที่คุณอาจต้องการที่จะดูที่เป็นที่นี่ ความคิดที่ว่านี้ตั้งค่ากฎที่ระบุว่าเป็น "เอาล่ะสิ่งที่คุณพิมพ์ใน index.php ย่อหน้าที่." คุณจะเห็นว่า *. ย่อมาจากอะไรตรงกับอะไร แล้วส่วนที่สองคือ index.php / $ 0, และ $ 0 หมายถึงสิ่งที่ได้รับการจับคู่ก่อนหน้านี้ ไม่ที่ทำให้รู้สึก? แต่สิ่งที่สำคัญจริงๆผมอยากจะเปลี่ยนคือการเปลี่ยนฐานเขียนนี้ ซึ่งเป็นฐาน URL มันเรียงลำดับของสมมติว่าคุณกำลังทำงานจาก ฉันจะเพิ่ม CS50 Kohana นั้น และวิธีการที่ตอนนี้ถ้าผมเอา index.php, มันควรจะทำงานและฉันจะเพิ่มตัวเลขบาง ที่จะแสดงให้คุณเห็นว่ามันแน่นอนไม่ทำงาน เสียงดี คำถามใด ๆ เพื่อให้ห่างไกล [นักศึกษา] มันรู้เพื่อให้ 123 ได้อย่างไร คืออาร์กิวเมนต์? อย่างแน่นอน คุณสามารถคิดว่ามันเช่นเดียวกับข้อโต้แย้ง แต่สิ่งที่แปลก แต่เป็นวิธีการที่ Kohana ไม่ได้ คือพวกเขาไม่ทำมันเหมือนกับการโต้แย้ง คุณต้องคว้ามันเช่นนี้ คุณต้องคว้าวัตถุคำขอและขอพารามิเตอร์ที่ตั้งชื่อ ID ที่ ID และชื่อที่มาจากไฟล์บูตที่ ที่ผมแสดงให้เห็นว่าก่อนหน้านี้และชื่อ ID ที่อยู่ในวงเล็บที่มุม และนั่นคือวิธีการที่คุณคว้าพารามิเตอร์เหล่านั้น น่ากลัว คำถามใด ๆ อื่น ๆ เช่นฉันกล่าวว่าการควบคุมพวกเขาจัดการกับตรรกะของโปรแกรมประยุกต์ เพื่อให้เป็น 1 ตัวอย่างที่คุณสามารถดูที่ 's - มันเป็นเรื่องพื้นฐานมาก แต่ก็ยังคงตรรกะของโปรแกรมประยุกต์ ความคิดของโลภพารามิเตอร์และการสร้างสายใหม่ ว่า "คุณบอกว่า blah" แล้วคายที่กลับมาให้คุณ และโดยทั่วไปสิ่งที่คุณทำคือการที่คุณสร้างตัวควบคุมที่แตกต่างกัน คุณสามารถสร้างตัวควบคุมที่แยกต่างหากสำหรับชิ้นส่วนที่แตกต่างกันของเว็บไซต์ของคุณ วันนี้เรากำลังจะสร้างเว็บไซต์ที่ง่ายมาก และมันจะเป็นบล็อกขั้นพื้นฐานมาก เรากำลังจะทำให้ควบคุมใหม่เพียงสำหรับการโพสต์ในบล็อกของ แต่แล้วถ้าผมยังเพิ่มความเห็นที่จะโพสต์บล็อก แล้วผมก็อาจจะต้องการให้ตัวควบคุมใหม่สำหรับความคิดเห็นที่ ถ้าผมต้องการที่จะเพิ่มผู้ใช้ผมก็อาจจะเพิ่มตัวควบคุมใหม่สำหรับผู้ใช้เหล่านั้น และโดยทั่วไปความคิดที่ว่าเมื่อใดก็ตามที่คุณมีรูปแบบใหม่ ข้อมูลวัตถุใหม่ที่คุณกำลังติดต่อกับ คุณมีตัวควบคุมเดียวสำหรับข้อมูลวัตถุที่ วันนี้เราเท่านั้นที่จะได้ทำงานร่วมกับวัตถุที่ 1 ข้อมูล และที่จะโพสต์ และคุณยังสามารถคิดของวัตถุที่เป็นข้อมูลที่ตรงกับตาราง โดยทั่วไปแต่ละตารางที่ 1 สอดคล้องกับชนิดของวัตถุข้อมูล ดังนั้นตารางการโพสต์จะมี 1 รูปแบบการโพสต์ ซึ่งจะมี 1 ตัวควบคุมการโพสต์ตรงกับที่ และเหมือนกันสำหรับความเห็นที่เหมือนกันสำหรับผู้ใช้และอื่น ๆ และอื่น ๆ และที่เป็นกฎทั่วไปของหัวแม่มือ มีกำลังจะเป็นกรณีพิเศษที่คุณอาจแตกต่างจากที่ แต่ 90% ของเวลาที่สิ่งที่คุณกำลังจะทำที่ และฉันจะแสดงให้คุณเห็นว่าเป็นสิ่งที่เรากำลังจะทำในวันนี้ 1 แนวคิดมากขึ้นก่อนที่เราจะดำน้ำกลับเข้ามาในรหัส ความคิดของการทำแผนที่วัตถุสัมพันธ์นี้ พวกคุณได้ทำมาแล้ว pset การพัฒนาเว็บ และคุณได้เห็นที่คุณทำแบบสอบถาม SQL, และสิ่งที่มันจะกลับไปที่คุณอยู่แถว คุณจะได้รับแถวเหล่านี้และคุณดัชนีพวกเขาตามชื่อบางส่วน ชื่อของคอลัมน์และตาราง และนั่นคือวิธีการที่คุณทำงานกับมัน และก็สามารถเป็นบิตยุ่งยาก แต่ยิ่งไปกว่านั้นถ้าคุณมีความสัมพันธ์ภายในฐานข้อมูลของคุณ อย่างเช่นถ้าผมมีความคิดเห็นและโพสต์ แล้วบางทีผมต้องการที่จะคว้าโพสต์แม่ของความคิดเห็น หากฉันใช้แถวเดียวใน SQL แล้วสิ่งที่ฉันจะได้รับเป็นรหัส โพสต์ของผู้ปกครองและไม่โพสต์จริงตัวเอง แต่เมื่อเรากำลังเขียนสิ่งที่เราต้องการจริงคือการคว้าจริง  โพสต์ของผู้ปกครองของตัวเองบางครั้ง สิ่งที่ทำแผนที่วัตถุสัมพันธ์ไม่เป็น มันต้องใช้ผลที่ได้จากการสืบค้นฐานข้อมูล และทำให้มันเป็นวัตถุสำหรับคุณที่มีมากดีกว่าที่จะทำงานกับ กว่าอาร์เรย์ธรรมดาและแถว ตัวอย่างเช่นตอนนี้เมื่อผมมีความคิดเห็นบางที และผมต้องการที่จะคว้าโพสต์แม่ของมัน และฉันไม่อาจจะแสดงความคิดเห็นโพสต์ลูกศร แล้วมันจริงจะให้ฉันโพสต์วัตถุ สอดคล้องกับการโพสต์ของผู้ปกครองที่เกิดขึ้นจริงไม่ได้เป็นเพียง ID บาง ซึ่งผมอาจจะต้องใช้และทำแบบสอบถามอื่นที่จะคว้าการโพสต์ ซึ่งเป็นที่ยุ่งยากและไม่จำเป็น และยิ่งไปกว่าโดยการทำแผนที่เหล่านี้แถวข้อมูลลงในวัตถุ คุณยังสามารถแนบฟังก์ชั่นมากขึ้นเพื่อวัตถุ ดังนั้นตัวอย่างเช่นผมได้พูดคุยเกี่ยวกับวิธีการเรียนเป็นหลักของการทำงานของกลุ่ม คุณสามารถคิดว่ามันเหมือนว่า ตัวอย่างเช่นอาจจะมีวัตถุโพสต์นี้ และบางทีฉันต้องการที่จะมีการจัดเรียงบางส่วนของฟังก์ชั่นที่ติดอยู่กับมัน ที่พื้นบอกฉันว่ามันถูกโพสต์เมื่อเร็ว ๆ นี้? ถูกมันโพสต์ในสัปดาห์ที่ผ่านมาจริงหรือเท็จ? และที่ทำงานของฉันสามารถแนบลงบนวัตถุนั้น และมันก็สะดวกมากที่จะมีในสถานที่เดียวกัน และมีโฮสต์ของฟังก์ชั่นที่แตกต่างกันคุณสามารถสร้าง สำหรับวัตถุเหล่านี้และมันเป็นเรื่องที่ดีจริงๆเพื่อให้สามารถแนบไปกับชั้นเรียน ไปยังวัตถุในขณะที่ถ้าคุณเพียงแค่มีแถวที่มาจากฐานข้อมูลของคุณ แล้วคุณไม่สามารถจริงๆแนบฟังก์ชั่นใด ๆ กับที่ มันเป็นข้อมูลที่แท้จริงเพียง คำถามใด ๆ เกี่ยวกับว่าที่ทั้งหมดหรือไม่ ORMs มีการพัฒนาเว็บกันมาก และมีมากชนิดที่แตกต่างกันของ ORMs มี และ Kohana มีออมของตัวเอง มันเป็นพื้นฐานมาก แต่คุณจะได้รับรสชาติของสิ่งที่ดูเหมือนว่า ลองสร้างแบบจำลองสำหรับการโพสต์บล็อกของเรา และสิ่งแรกที่เราเห็นได้ชัดต้องทำคือการสร้างตารางที่เกิดขึ้นจริง ภายในฐานข้อมูลของเราที่จริงการจัดเก็บข้อมูลของเราโพสต์ที่ สิ่งแรกที่ผมจะทำคือไปที่ phpMyAdmin ได้พวกคุณใช้ phpMyAdmin มาก่อนหรือไม่ เอาล่ะที่น่ากลัวเพื่อให้พวกคุณรู้อยู่แล้วว่าสิ่งที่เป็น และฉันจะสร้างตารางใหม่ที่เรียกว่า Kohana กระทู้, และมันจะเป็นเรื่องง่ายมาก ฉันจะต้องกลับเข้าสู่ระบบ ทั้งหมดที่เรากำลังจะทำในวันนี้คือมีนักเขียนและร่างกาย เพียงแค่ให้มันง่าย ฉันจะสร้างตารางที่ และตอนนี้เราก็มีตารางที่เป็นตัวแทนของการโพสต์ของเรา 2 ฟิลด์สำหรับผู้เขียนและร่างกายของเรา สิ่งอื่น ๆ ที่ฉันจะทำตอนนี้คือ กำหนดค่าโปรแกรมประยุกต์เว็บของฉันจึงรู้วิธีการเชื่อมต่อกับฐานข้อมูล และนี้อีกครั้งเป็นสิ่งที่คุณจะต้องทำกับทุกการใช้งานเว็บ คุณต้องบอกว่าชื่อผู้ใช้และรหัสผ่าน และชื่อของฐานข้อมูลและอื่น ๆ และอื่น ๆ ที่จะคิดออกวิธีการที่จริงการเชื่อมต่อกับฐานข้อมูลของคุณ ใน Kohana เรามีสิ่งที่เรียกว่าโมดูลฐานข้อมูล และการกำหนดค่าในโฟลเดอร์ที่เรามีโฟลเดอร์ที่เรียกว่าฐานข้อมูลนี้ และในขณะที่คุณสามารถดูมีพวงของการตั้งค่าที่คุณจะต้องตั้งที่นี่ ที่จะบอกว่าสิ่งที่เป็นชื่อผู้ใช้และรหัสผ่าน สำหรับฐานข้อมูลเพื่อให้ฉันจริงสามารถเชื่อมต่อกับมัน และตั้งแต่ฉันไม่ต้องการให้พวกคุณรู้จริง ชื่อผู้ใช้และรหัสผ่านของฐานข้อมูลของฉัน ผมมีไฟล์ที่ฉันตั้งแล้วมันทั้งหมดขึ้นและผมจะคัดลอกและวางมันไป น่ากลัว ถูก ผมคิดว่าการตั้งค่าทั้งหมดที่ผมต้องทำ แต่เรามาดู เราจะให้ทำงานในนั้นและหากสิ่งที่เกิดปัญหา แล้วเราจะแก้ไขได้ ตอนนี้สิ่งที่ผมจะทำคือผมจะสร้างตัวควบคุมใหม่ จริงหรือขอโทษ ครั้งแรกที่ฉันต้องสร้างรูปแบบใหม่ ฉันจะสร้างรูปแบบใหม่ที่เรียกว่า Post.php, และสิ่งที่เรากำลังจะทำคือเรากำลังจะเรียกว่าชั้น Model_Post ได้รับการเน้นไวยากรณ์บางอย่างเกี่ยวกับ และดังนั้นเมื่อผมพูดว่า "ขยายออม" ที่เป็นพื้น บางคนเขียนโปรแกรมเชิงวัตถุมากขึ้น ซึ่งน่าเสียดายที่พวกคุณไม่ได้เรียนรู้ใน CS50 ยัง แต่ก็สวยง่ายที่จะรับ มันทำให้ฉันทั้งหมดนี้ฟังก์ชั่นพิเศษที่มาในแพคเกจออมนี้ และเพื่อให้ฉันได้รับพวงของฟังก์ชั่นพิเศษและ whatnot ฟรี, ซึ่งคุณจะเห็นบิตของในที่สอง ตอนนี้จริงทั้งหมดที่ผมต้องทำคือการสร้างชั้นนี้ ฉันไม่ได้ต้องการที่จะทำให้ฟังก์ชั่นใดหรืออะไร แต่เราได้สร้างชั้นที่แสดงถึงตารางที่ และเพราะฉันได้ขยายชั้นเรียนออมนี้ ฉันจะได้รับพวงของสิ่งฟรีดังนั้นสำหรับตอนนี้คุณไม่จำเป็นต้องตั้งค่าอะไรมากขึ้น และตอนนี้สิ่งที่ผมจะทำคือผมจะสร้างตัวควบคุมใหม่ ซึ่งผมจะตั้งชื่อ blog.php, และผมจะคัดลอกไปควบคุมยินดีต้อนรับคุณ ดังนั้นผมจึงไม่จำเป็นต้องพิมพ์สิ่งบางอย่าง และตอนนี้ฉันมีการเปลี่ยนชื่อนี้ ตอนนี้สิ่งที่ฉันจะทำอย่างไรที่จะทดสอบเพื่อให้แน่ใจว่าทุกอย่างจะทำงานออก ฉันจะคว้าโพสต์ครั้งแรกจากฐานข้อมูลของฉัน และพิมพ์เนื้อหาของการโพสต์บนหน้าจอ ที่จะทำสิ่งที่ฉันจะทำก่อนที่ฉันจะบันทึกการโพสต์ กับตัวแปรดังนั้นสิ่งที่เรากำลังจะทำคือ - ใน Kohana สิ่งที่คุณทำคือการคว้าวัตถุที่โพสต์ มันเป็นชนิดของยุ่งยาก แต่คุณต้องทำสิ่งนี้เรียกว่าออม :: โรงงาน แล้วคุณจะผ่านในชื่อของรูปแบบที่คุณต้องการ และจะส่งกลับวัตถุออมที่แสดงถึงรูปแบบที่ แล้วเหมือนที่ผมกล่าวว่าเมื่อเราขยายวัตถุออม, เราได้รับวิธีการเหล่านี้ทั้งหมดฟรีดังนั้นสำหรับตัวอย่างเช่น เราได้รับฟังก์ชั่นใหม่นี้เรียกว่า "พบ" ซึ่งจะกลับทุกโพสต์เดียวในฐานข้อมูล ซึ่งเป็นวิธีที่สะดวกสวย และตอนนี้อยู่ในร่างกายของฉันจะกลับมา โพสต์แรกและกลับร่างของมัน และแน่นอนฉันต้องสร้างโพสต์ จึงขอแทรกโพสต์ใหม่ ฉันจะพูดว่า "แบรนดอน, โพสต์แรกของฉัน." น่ากลัว และตอนนี้เรากำลังจะไปยังบล็อก และถ้าทุกอย่างทำงานได้ดี - โอ้นี้เป็นบางสิ่งอื่น ๆ ที่ได้รับอนุญาตแฟ้มใบ้อีกครั้ง ยึดมั่นใน 1 วินาที เป็นชนิดของไร้สาระ มีเราไป ถูก ฉันคงปัญหาที่ได้รับอนุญาต มันก็พยายามที่จะสร้างบางไฟล์และเข้าสู่ระบบบางอย่าง และการอนุญาตอีกครั้งที่ไม่ได้กำหนดอย่างถูกต้องเพื่อให้ฉันทำมัน ไฟล์เหล่านั้นเพื่อให้มีการเขียนและปฏิบัติการ เพื่อที่จะสามารถเข้าสู่ระบบจริงกับสิ่งที่ ตอนนี้ก็ให้ฉันอีกว่าข้อยกเว้น "ออมชั้นไม่พบ" และที่ว่าเพราะผมลืมขั้นตอนอื่น ที่เลวร้ายเกินไป ในแฟ้มโฟลเดอร์บูตมีโมดูลเหล่านี้ที่นี่ ซึ่งคุณสามารถเลือกที่จะเปิดหรือปิดการใช้งาน เหล่านี้เป็นพวงของคุณสมบัติที่แตกต่างที่คุณสามารถเลือกที่จะใช้ Kohana ภายในซึ่งเป็นประเภทของดี ตัวอย่างเช่นพวกเขามีโมดูลการตรวจสอบ ซึ่งคุณสามารถใช้สำหรับการตรวจสอบผู้ใช้ พวกเขามีโมดูลแคชถ้าคุณต้องการที่จะใช้ การเรียงลำดับของแคชบางหลังจบที่จะทำให้งานโปรแกรมได้เร็วขึ้นและ whatnot เราจำเป็นที่จะต้องเปิดการใช้งานฐานข้อมูลและโมดูลออม, เพราะเหมือนที่ผมกล่าวว่าเรากำลังใช้ฐานข้อมูลชัด และเรายังจำเป็นที่จะต้องเปิดการใช้งานโมดูลออม, เพราะเราต้องการที่จะมีการทำงานพิเศษซึ่งเป็นสิ่งที่ดีที่จะมี ทั้งหมดที่ฉันต้องทำคือการ uncomment ที่ 2 เส้น และตอนนี้ถ้าผมฟื้นฟูจะให้ฉันข้อผิดพลาดอื่น มันบอกว่า "ชั้น Model_Post ไม่พบ." ตอนนี้เป็นปัญหาที่ดีที่จะมี ลองมาดูกัน ทำให้ประชาชน ที่ยึดมั่นใน โธ่เอ๊ย ผมไม่ทราบว่าทำไมมันไม่สามารถที่จะพบว่า ที่แปลกจริงๆ ฉันได้เรียนนี้ที่นี่ ผมคิดว่าผมอาจจะต้อง - โอ้ ผมใบ้เพื่อ ฉันลืมที่จะเพิ่มแท็ก PHP นั่นเป็นเหตุผลที่ ตอนนี้ผมต้องยกเลิกการเปลี่ยนแปลงที่ 1 ฉันไม่ เอาล่ะ มีเราไป นั่นคือโง่จริงๆ ฉันไม่ได้มีแท็ก PHP เปิด แต่ในขณะที่คุณสามารถดูตอนนี้ก็ทำงานอย่างถูกต้องใช่ไหม เรามี 1 โพสต์ เราคว้าโพสต์แรกและตอนนี้เราพิมพ์ออกมาร่างของมัน ยิ่งใหญ่ น่าอัศจรรย์ คำถามใด ๆ เพื่อให้ห่างไกล Nope? คำถามใด? เอาล่ะเพื่อที่เราเพิ่งสร้างรูปแบบการโพสต์พื้นฐานมาก และเราจะเพิ่มฟังก์ชั่นบางอย่างในภายหลัง เราสามารถเพิ่มการตรวจสอบและการกรอง การตรวจสอบเป็นส่วนหนึ่งของสิ่งที่ ที่กรอบแก้ปัญหาสำหรับคุณจริงๆดีจริงๆ และฉันไม่คิดว่าพวกคุณต้องทำเช่นนี้สำหรับ pset CS50 ของคุณ แต่ถ้าคุณทำในการพัฒนาเว็บสำหรับโครงการสุดท้ายของคุณ คุณกำลังมีแนวโน้มที่จะต้องการที่จะทำเรียงลำดับของการตรวจสอบบางอย่าง เช่นไม่ได้มีชื่อผู้ใช้เปล่า อาจจะมีรหัสผ่านที่มีความยาวอย่างน้อยบางสิ่งที่ต้องการที่ และมันเป็นเรื่องยุ่งยากจริงๆที่จะใช้สิ่งเหล่านี้ด้วยตัวเอง และสวยมากทุกกรอบเว็บเดียวไม่ได้สำหรับคุณ และช่วยให้คุณที่จะทำมันในทางที่สะอาดมาก และรูปแบบเป็นที่ที่คุณมักจะแสดงกฎการตรวจสอบนั้น เพราะการตรวจสอบไม่ว่าจะเป็นรูปแบบที่ถูกต้องหรือไม่ แต่ตอนนี้เรากำลังจะใส่ที่จนกระทั่งต่อมา และตอนนี้เรากำลังจะไปทำงานในส่วนอื่น และเราจะพยายามทำให้มุมมองใหม่ ที่แสดงข้อความทั้งหมด ขั้นตอนที่เกี่ยวข้องในการดำเนินการใหม่สำหรับรายการข้อความทั้งหมด คือการคว้ารายการจากโพสทั้งหมด แล้วทำให้รายการของข้อความทั้งหมดผ่านมุมมอง ที่นี่โชคดีพอเราอยู่แล้วคว้าข้อความทั้งหมด โดยใช้บรรทัดแรกนี้หาฟังก์ชั่นทั้งหมด และตอนนี้สิ่งที่เรากำลังจะทำคือเพื่อให้ห่างไกล ฉันได้รับการตั้งค่าของการตอบสนองของร่างกายโดยตรง โดยผ่านสาย แต่ตอนนี้ฉันต้องการที่จะใช้มุมมอง และความแตกต่างระหว่างมุมมองและเพียงแค่การทำเช่นนี้ คือการมีมุมมองที่ฉันสามารถมีดี HTML แม่แบบขนาดใหญ่ และสิ่งที่ฉันสามารถทำได้คือผ่านมันตัวแปรบางอย่าง แล้วได้มุมมองที่เติมแม่แบบโดยอัตโนมัติ โดยใช้ตัวแปรเหล่านั้น สิ่งที่ผมจะทำคือผมจะสร้างมุมมองใหม่ และฉันจะตั้งชื่อมุมมองบางอย่างเช่น "บล็อก / ดัชนี" และฉันจะเป็นพื้นผูกนี้ - โอ้, สิ่งที่ฉันเขียน? สมองของฉันเป็นที่อื่น ฉันจะผูกกระทู้ตัวแปรมุมมอง ดังนั้นวิธีการที่มุมมองที่มีการเข้าถึงตัวแปรโพสต์นี้ และดังนั้นตอนนี้ฉันต้องการที่จะสร้างมุมมองนี้ ดังนั้นที่นี่เรามีโฟลเดอร์ที่เรียกว่า "มุมมอง" นี้ และเป็นครั้งแรกที่ผมจะสร้างโฟลเดอร์ใหม่ภายใต้ที่เรียกว่า "บล็อก". นี้เป็นสิ่งที่ดี วิธีที่เราสามารถมีลำดับชั้นที่ดีสำหรับมุมมองของเราที่ แล้วฉันจะสร้างไฟล์อื่นในนั้นเรียกว่า "index.php." น่ากลัว ที่จริงแล้วการปล่อยให้มีพวกเขาทั้งสองที่นี่ ทำให้ไฟล์มุมมองน่าจะเป็นส่วนที่ง่ายที่สุดของทั้งหมดนี้ และเหล่านี้อาจเป็นสิ่งที่คุณคุ้นเคยกับ เรากำลังจะทำสิ่งที่ง่ายจริงๆ เริ่มต้นว่า "รายการของฉันโพสต์บล็อก." แล้วเราสามารถผ่าน และเราสามารถย้ำผ่านแถวโพสต์ คว้าทุกโพสต์เดียวและพูดอะไรบางอย่างเช่น - อาจจะเพิ่มบรรทัด แล้วพิมพ์ออกมาผู้เขียนและร่างกาย ที่ทำให้รู้สึกเพื่อให้ห่างไกล และให้ดูว่าการทำงาน ไม่มีอะไรเกิดขึ้น ผมสงสัยว่าทำไม โอ้ฉันพลาดขั้นตอนที่ 1 มากโง่ของฉัน ฉันสร้างมุมมอง แต่ผมก็ไม่ได้ตั้งค่ามุมมองที่การตอบสนอง ดังนั้นคุณต้องทำสิ่งที่ 1 ที่คุณต้องทำ "ร่างกายตอบสนองนี้" และตั้งค่าให้เป็นมุมมอง มีเราไป เรามีส่วนหัวของเราและเราก็มีการโพสต์ และเพียง kicks ขอแทรกโพสต์อื่น เพื่อให้เราสามารถดูรายการ และใส่เหล่านี้ 2 โพสต์ และตอนนี้ถ้าผมรีเฟรชหน้า เราจะเห็นการโพสต์เหล่านี้ทั้งหมดที่นี่ ที่ไม่ทำให้รู้สึกเพื่อให้ห่างไกล ใช่คำถามหรือไม่ โอ้โอเค ที่คุณสามารถดูเราได้รับสามารถที่จะแยกรหัสเหล่านี้ออกทั้งหมด เป็นส่วนที่แตกต่างกันและจากนั้นคุณสามารถมองเห็นได้ชัดเจนมากที่สุดกับรหัสมุมมอง ไฟล์นี้ที่นี่ที่แสดงให้เห็นถึงมุมมอง มันเพียง แต่ให้ความสำคัญกับการเป็นตัวแทนของข้อมูลการแสดงข้อมูล จะได้รับการผ่านการจัดเรียงของข้อมูลบางส่วนและทั้งหมดก็จะเป็นเพียงการแสดงให้คุณ ในส่วนอื่น ๆ ทั้งหมดของรหัสของคุณคุณจะไม่ต้องกังวลเกี่ยวกับการใด ๆ ที่ และเช่นเดียวกันรหัสมุมมองของคุณไม่ต้องกังวลอะไรเกี่ยวกับ วิธีการเข้าถึงฐานข้อมูลและอื่น ๆ และอื่น ๆ ซึ่งเป็นสิ่งที่ดีมากและจะทำให้รหัสของคุณมากขึ้น maintainable เช่นฉันกล่าวว่ามุมมองที่พวกเขากำลังแบบไดนามิกในที่ เป็น 1 ไฟล์ แต่มันจะสร้างมุมมองที่แตกต่างกัน ขึ้นอยู่กับตัวแปรที่คุณผ่านการจริงในการที่ และยิ่งมีจำนวนมากของฟังก์ชั่นที่แตกต่างกันผู้ช่วย ที่คุณสามารถใช้เพื่อช่วยให้คุณเขียนรหัสของคุณได้เร็วขึ้น ที่ผมจะแสดงให้คุณในเวลาเพียงสอง ใช่ [นักศึกษา] ดังนั้น $ 0 ขวาเป็นตัวควบคุม? ว่าสิ่งที่สอง คำถามคือเป็น 0 $ ควบคุมได้หรือไม่ 0 $ เป็นตัวแปรฉันสร้างขึ้นที่นี่ ฉันสร้างมุมมองแรก ผมได้รับมอบหมายให้กับตัวแปรบาง จากนั้นฉันก็ผ่านมันเป็นฟังก์ชั่นนี้ตั้งเป็นร่างกายของการตอบสนอง ไม่ที่ทำให้รู้สึก? [นักศึกษา] ดังนั้นมุมมอง :: โรงงานเป็นมุมมองเช่น class หรือห้องสมุด [ไม่ได้ยิน] ฟังก์ชั่นโรงงาน คำถามคือเกี่ยวกับฟังก์ชั่นมุมมอง :: โรงงาน และพื้นนี้เป็นโปรแกรมเชิงวัตถุบางอย่างมากขึ้นเป็นหลัก มุมมองเป็นมุมมองการเรียนและจะมีวิธีการที่เรียกว่า "โรงงาน" และนั่นคือวิธีการที่จะคว้าวัตถุที่ชื่อ "บล็อก / ดัชนี." และที่ว่าบางเชิงวัตถุสิ่งที่เขียนโปรแกรมเพิ่มเติม ว่าฉันจะไม่ไปลงที่นี่มากเกินไป ตอนนี้เห็นได้ชัดว่าเราต้องการที่จะสร้างการโพสต์ใหม่ แต่เราไม่ต้องการให้มีการทำผ่านฐานข้อมูล ดังนั้นเราจะสร้างการดำเนินการใหม่สำหรับการสร้างการโพสต์ใหม่ และมีจำนวนมากของสิ่งที่เราต้องทำ สิ่งแรกที่เรากำลังจะทำ - ให้ต่อสู้กับสิ่งเหล่านี้อย่างใดอย่างหนึ่งโดยหนึ่ง สิ่งแรกที่เราจะทำคือการที่เราได้มีการสร้างฟอร์ม ในการแทรกการโพสต์ใหม่ แต่ฉันยังจะเพิ่มการดำเนินการใหม่เป็นครั้งแรก ดังนั้นการเพิ่มการดำเนินการใหม่เป็นเพียงเป็นเรื่องง่ายที่ เพิ่มฟังก์ชั่นใหม่ที่มีตัวควบคุมของคุณ และตอนนี้ผมกำลังจะไปทำอะไรที่พื้นฐานมาก เพียงคว้ามุมมองนี้และโพสต์เพียงแค่แสดงให้คุณ แล้วตอนนี้ผมกำลังจะไปสร้างไฟล์มุมมองใหม่ และฉันจะเริ่มต้นการเขียนสิ่งบางอย่าง มีอะไรที่ดีเกี่ยวกับ Kohana ที่พวกเขาให้มากของฟังก์ชั่นที่แตกต่างกันผู้ช่วย สำหรับคุณที่จะเขียนรหัสดูได้ง่ายขึ้น และ 1 ของผู้ที่ทำหน้าที่ผู้ช่วยผู้ช่วยหรือโมดูล เป็นรอบการเขียนในรูปแบบ สำหรับการเขียนในรูปแบบที่ผมไม่ได้จริงๆต้องเขียนโดยตรง HTM​​L ใด ๆ ที่ตัวเอง พวกคุณได้เขียนในรูปแบบ HTML คุณจะรู้ว่าวิธีที่จะสามารถจริงๆเจ็บปวดและยุ่งยากในการเขียนรูปแบบ มันไม่สนุกเพื่อให้โชคดี เราก็สามารถเขียนในรูปแบบของการใช้ Kohana รูปแบบฟังก์ชั่นผู้ช่วยที่จะทำเพื่อเรา เรากำลังจะไปโดยทั่วไปมีฟิลด์สำหรับทุกสิ่งเดียวที่เรามี ดังนั้นหนึ่งสำหรับผู้เขียนและหนึ่งสำหรับร่างกาย เรากำลังจะมีป้ายชื่อและเรากำลังจะมีการป้อนข้อมูล และแล้วในที่สุดเรากำลังจะมีการส่ง และในขณะที่คุณสามารถดูนี้เป็นทำความสะอาดมากในการเขียน กว่าทุกที่ HTML ยุ่งซึ่งเป็นชนิดที่ดี รับมีกรอบเว็บอื่น ๆ ที่มีก็ยังสะอาดกว่าที่ แต่อย่างน้อยนี้จะดีกว่าการเขียน HTML ด้วยตัวคุณเอง น่ากลัวดังนั้นนี่คือสิ่งที่คุณเห็น นั่นคือชนิดของยุ่ง ดังนั้นฉันจะเพิ่มตัวแบ่งบรรทัดมี เพื่อให้ที่ดูดีกว่าเล็กน้อย ดีแน่นอนก็ยังคงดูจริงๆดีจริงๆ แต่เรากำลังมุ่งเน้นเพียงแค่ ในการทำงานในขณะนี้และไม่ได้อยู่ในความงาม เวลาที่จะทำทุกอย่างไม่มี และอย่างที่คุณเห็นตอนนี้เรามีรูปแบบซุปเปอร์ขั้นพื้นฐาน ซึ่งเป็นชนิดที่ดี รหัสนี้ผมจะบอกว่าสะอาดกว่าการพยายามที่จะเขียน HTML รูปแบบตัวเอง เพื่อให้เป็นที่ดี ถัดไปคืออะไร ตอนนี้เราต้องทำสิ่งที่มีการกระทำ โดยปกติเมื่อคุณเขียนในรูปแบบ HTML, คุณต้องบอกว่าที่มันจะส่งแบบฟอร์มการ โดยเริ่มต้นในที่สุดกรอบเว็บ มันส่งไปยัง URL เดียวกันแน่นอนดังนั้นสิ่งที่เป็น ถ้าคุณได้รับการส่งคำขอไปยัง / บล็อก / ใหม่ มันจะแสดงให้คุณในรูปแบบที่ แต่ถ้าคุณส่งคำขอไปยังโพสต์ / บล็อก / ใหม่ที่มีข้อมูล จริง ๆ แล้วมันควรจะพยายามที่จะบันทึกโพสต์ที่ และทำอะไรกับมัน สิ่งที่เรากำลังจะทำคือ พื้นทั้งหมดที่เราต้องทำในการตรวจสอบไม่ว่าจะเป็นขอโพสต์หรือได้รับการร้องขอ คือการตรวจสอบสิ่งที่เป็นตัวแปรการโพสต์คุณสามารถตั้งค่า และถ้าตัวแปรการโพสต์ตั้งแล้วเราจะลองและสร้างโพสต์ใหม่ อีกครั้งเราก็ทำเช่นนี้ และที่สร้างโพสต์ใหม่และเรากำลังจะไปตามตัวอักษร การตั้งค่าเขตข้อมูลเช่นนี้ และจากนั้นเราจะบันทึกไว้ แล้วฉันจะเปลี่ยนเส้นทาง ไปที่เพจดัชนีเพื่อให้พวกเขาสามารถดูรายชื่อของการโพสต์อีกครั้ง ลองว่า ฉันจะพูดว่า "แบรนดอน" แล้วส่งโพสต์และถ้าทุกอย่างเป็นไปด้วยดี ที่คุณสามารถเห็นมันเปลี่ยนเส้นทางฉันไปที่หน้าดัชนี และถ้าผมเลื่อนไปด้านล่างเรามีการโพสต์แทรกใหม่ เย้! ใช่คำถาม [นักศึกษา] สิ่งที่ถ้าคุณได้เข้ามาสิ่งเดียวที่แน่นอน คุณป้อนมาก่อนหรือไม่ ที่ไม่ได้ตรวจสอบเพื่อให้แน่ใจว่าคุณได้ไม่ซ้ำ ส่งเดียวกันได้หรือไม่ เป็นค่าเริ่มต้นไม่เพราะโดยค่าเริ่มต้น - เสียใจคำถามคือถ้าคุณใส่ในข้อมูลเดียวกันในรูปแบบที่แน่นอน และส่งที่จะช่วยให้คุณสามารถแทรกวัตถ​​ุที่ซ้ำกัน ซ้ำรายการหลัก? ตอนนี้ใช่มันจะช่วยให้คุณทำอย่างนั้น เพราะอยู่ในฐานข้อมูลก็ถูกต้องสมบูรณ์จะมีแถวที่ซ้ำกันอย่างสมบูรณ์ แต่ถ้าที่เป็นกังวลแล้วคุณสามารถเพิ่มการตรวจสอบตัวอย่างเช่น เพื่อให้แน่ใจว่าถ้าตรงนี้เป็นเช่นเดียวกับสิ่งที่มีอยู่แล้ว แล้วพูดว่ามันเป็นวัตถุที่ไม่ถูกต้อง แล้วคุณยังสามารถระบุข้อผิดพลาดของคุณ และพูดว่า "ไม่ถูกต้องเพราะมีอยู่แล้ว" หรือสิ่งที่ต้องการที่ แต่ในกรณีนี้ผมก็สามารถสร้างสิ่งที่ซ้ำกัน ตอนนี้ขอลองและเพิ่มการตรวจสอบบางอย่าง ปัญหานี้ได้ในขณะนี้คือ แท้จริงฉันจะส่งโพสต์ที่ว่างเปล่าอย่างสมบูรณ์ ฉันสามารถคลิกที่ปุ่มนี้ในขณะนี้และมีเราไป คุณไม่สามารถจริงๆเห็น แต่สายพิเศษที่นี่ แสดงให้เห็นว่าแท้จริงฉันมีโพสต์ใหม่ มันก็มีนักเขียนที่ว่างเปล่าและร่างกายว่างเปล่า และเราไม่ต้องการที่จะช่วยให้คนที่จะทำเช่นนั้น ซึ่งเป็นที่ที่การตรวจสอบเข้ามา ฉันสามารถไปกับวัตถุรูปแบบของฉัน และตอนนี้ฉันสามารถเพิ่มฟังก์ชั่นใหม่ที่ระบุ กฎการตรวจสอบสิ่งที่ฉันควรจะเพิ่มในรุ่นนี้ เพื่อให้แน่ใจว่ามันถูกต้องหรือเพื่อระบุสิ่งที่ไม่ได้หมายความว่าจะโพสต์ที่ถูกต้อง และผมอยากจะบอกว่ามันเป็นเพียงการโพสต์ที่ถูกต้องเมื่อทั้งสองเขียนและร่างกาย ไม่ว่างและนี่คือวิธีที่คุณทำมันใน Kohana คุณสร้างฟังก์ชั่นใหม่ที่เรียกว่า "กฎ" แล้วคุณโดยทั่วไปกลับแถวที่สมาคม ที่กำหนดกฎการตรวจสอบสำหรับวัตถุนี้ เรากำลังจะกลับอาร์เรย์และจากนั้นสิ่งที่เรากำลังจะทำคือ พูดว่า "ผู้เขียน" มันจะไปอาร์เรย์ ซึ่งจะไปแถวอื่นเรียกว่า "ไม่ว่าง". แล้วฉันจะพูดว่า "ร่างกาย". เอาล่ะและไวยากรณ์สำหรับนี้และโครงสร้างนี้ อาจจะดูยุ่งยากน้อยและมีความซับซ้อนน้อย ถ้าคุณอ่านเอกสารก็ตรงไปตรงสวยที่จะคิดออก แต่เป็นหลักนี้เป็นสิ่งที่คุณต้องทำเพื่อระบุ บางกฎการตรวจสอบและมีจำนวนมากของกฎระเบียบที่แตกต่างกัน Kohana ที่จะให้คุณฟรีเช่นคุณสามารถเพิ่มกฎระเบียบที่จะบอกว่า มันต้องมีอย่างน้อยระยะเวลานี้ บางทีมันอาจจะเป็นตัวเลขได้ บางทีมันอาจจะเป็นตัวเลขอัลฟามี บางทีมันอาจจะเป็นระยะเวลาที่มากที่สุดนี้เป็นต้นและอื่น ๆ มี มีจำนวนมากของกฎระเบียบที่แตกต่างกันที่ Kohana ให้คุณมี และคุณสามารถไปที่เว็บไซต์ของพวกเขามองไปที่เอกสาร และคุณสามารถเห็นทุกสิ่งที่แตกต่างกันที่คุณสามารถทำได้ แต่นี้คือทั้งหมดที่ฉันต้องทำ และตอนนี้เรามาดูสิ่งที่เกิดขึ้น ถ้าผมส่งโพสต์ที่ว่างเปล่า สิ่งที่จะเกิดขึ้นได้อย่างไร โอ้ไม่ฉันได้รับข้อผิดพลาด ฉันได้รับการยกเว้นการตรวจสอบ ดีก็เป็นสิ่งที่ดี มันบอกว่ารูปแบบของฉันคือการที่ไม่ถูกต้อง แต่ฉันไม่ต้องการที่จะแสดงข้อยกเว้น ให้กับผู้ใช้ของฉันเมื่อพวกเขาพยายามที่จะส่งสิ่งที่ไม่ถูกต้องใช่ไหม ผมต้องการที่จะให้พวกเขามีการจัดเรียงของข้อผิดพลาดบางอย่างเป็นมิตร เมื่ออะไรผิดพลาด สิ่งที่เรากำลังจะทำคือการที่เรากำลังจะ ห่อทุกอย่างในวงลองจับ จริงๆแล้วผมคิดว่านี่เป็นสิ่งที่คุณยังไม่ได้เรียนยัง ใน CS50 เพราะ C, การเขียนโปรแกรมภาษาซี ไม่ได้มีข้อยกเว้น แต่เกือบทุกภาษาอื่น ๆ เดียว มีข้อยกเว้นดังนั้นจริงๆสั้นจริงๆ ข้อยกเว้นคือสิ่งที่ชิ้นส่วนของรหัสสามารถ โยนข้อยกเว้นเมื่ออะไรผิดพลาด แต่แล้วบางทีบางชิ้นอื่น ๆ ของรหัสที่สูงขึ้น สามารถจับข้อยกเว้นที่และทำอะไรกับมัน ตัวอย่างเช่นในกรณีนี้ ชิ้นส่วนของรหัสที่พยายามที่จะบันทึกแบบ มันตรวจสอบรูปแบบและถ้ามันบอกว่า "เอาล่ะแบบนี้ไม่ถูกต้อง" ก็จะโยนข้อยกเว้นและนี่คือชนิดของเทียบเท่ากับ ใน C คุณอาจกลับ -1 หรือสิ่งที่ต้องการที่ แล้วสำหรับผมที่ฟังก์ชั่นนี้รหัสของฉัน ในระดับที่สูงที่ฉันสามารถลองและจับข้อยกเว้นว่า และโดยทั่วไปพูดว่า "เอาล่ะถ้าผมจับข้อยกเว้นสิ่งที่ฉันจะทำอย่างไร" หรือฉันสามารถเลือกที่จะไม่จับข้อยกเว้นที่และปล่อยให้คนสูงขึ้น จับข้อยกเว้นหรือถ้าไม่มีใครจับมัน แล้วโปรแกรมทั้งหมดเกิดปัญหาและบอกว่า "อะไรบางอย่างผิดพลาดไปและผมก็ไม่สามารถจัดการกับมัน." แต่สิ่งที่เราทำคือคุณตัดชิ้นส่วนของรหัสในบล็อกลอง แล้วคุณจะยังเพิ่มสิ่งที่เรียกว่าบล็อกจับ ซึ่งเป็นประเภทของรหัสที่จะพยายามและจับข้อยกเว้นที่อาจเกิดขึ้น และอื่น ๆ ถ้าผมจับข้อยกเว้นนี้โดยเฉพาะ หรือการทำให้ข้อยกเว้นแล้วสิ่งที่ผมจะทำคือ ฉันจะตั้งข้อผิดพลาด - ผมคิดว่าเป็นวิธีที่ฉันทำมัน - และผมจะตั้งข้อผิดพลาดไปยังวัตถุบางอย่าง และแล้วสิ่งที่ผมจะทำคือถ้ามันกระทบข้อยกเว้นนี้ ก็จะไม่เปลี่ยนเส้นทางและถ้ามันไม่ได้เปลี่ยนเส้นทาง มันจะออกมาจากถ้าบล็อกมา และตีบล็อกนี้ / ใหม่ซึ่งต้องการที่ฉันต้องการทำ หากมีข้อผิดพลาดแล้วผมต้องการที่จะกลับไปที่รูปแบบ และแสดงข้อผิดพลาดที่ ตอนนี้สิ่งที่ฉันต้องการจะทำคือผมต้องการที่จะผ่านในข้อผิดพลาดที่ ในมุมมองของ เอาล่ะฉันคิดว่าฉันมีมุมมองที่ถูกต้องที่นี่ และโดยทั่วไปฉันต้องการที่จะแสดงข้อผิดพลาดเหล่านั้นถ้าพวกเขาอยู่ ก่อนที่ผมจะเขียน HTML สำหรับว่าฉันจะได้อย่างรวดเร็วจริงๆ แสดงให้คุณเห็นสิ่งที่โครงสร้างของข้อผิดพลาดนี้ลักษณะตัวแปรต้องการ และนี่คือการปฏิบัติที่ดีในทั่วไป หลายครั้งที่คุณจะได้รับสิ่งที่กลับมาจากวิธีการบางอย่าง ฟังก์ชั่นบางอย่างในกรอบเว็บ และคุณไม่ทราบว่าตัวแปรที่มีลักษณะเหมือน เพื่อให้คุณไม่ทราบวิธีการทำงานกับมัน ผมจะใช้วิธีการพิมพ์ r เพื่อพื้นพิมพ์ออกมา และในขณะที่คุณสามารถเห็นมันบอกฉันว่ามันเป็นแถวร่วม และคุณมีความสำคัญที่ผู้เขียนชี้ไปยังสตริงนี้ ผู้เขียนจะต้องไม่ว่างเปล่าและที่สำคัญอื่นของร่างกาย ชี้ไปยังสตริงอื่นของร่างกายต้องไม่ว่างเปล่า ฉันชอบเป็นไรเย็น แล้วฉันสามารถย้ำผ่านแถวและพิมพ์ออกทุกข้อความเดียว มันเป็นพื้นเช่นอาเรย์ที่มีพวงของข้อความ สิ่งที่ผมจะทำคือ "ถ้าข้อผิดพลาด" และฉันจะสร้างรายการเรียงลำดับ และฉันจะย้ำถึงข้อผิดพลาดทั้งหมด และนี่และตอนนี้ฉันจะลองส่งนี้อีกครั้ง และขอดูสิ่งที่เราได้รับ ตอนนี้เราได้รับรายชื่อนี้ดีข้อผิดพลาด และนี้ยังคงเป็นที่น่าเกลียดสวย แต่นี้เห็นได้ชัดว่าสามารถจัดรูปแบบให้ดูดี แต่แนวคิดพื้นฐานเป็นเพียงในไม่กี่บรรทัดของรหัส เราสามารถที่จะตรวจสอบรูปแบบของเรา ให้แน่ใจว่าบางเขตข้อมูลไม่ว่างเปล่า และหากสิ่งที่ผิดพลาดไปแล้วกลับการจัดเรียงของข้อผิดพลาดบางอย่าง จากนั้นผมก็จะนำเสนอกลับไปยังผู้ นอกจากนี้คุณยังสามารถปรับแต่งการตรวจสอบของคุณ เพื่อให้คุณจริงจะมีข้อผิดพลาด ที่มีมากขึ้นโดยเฉพาะการใช้งานหรือสิ่งที่ต้องการของคุณ สิ่งที่อยู่โดยทั่วไปที่ปรับแต่งได้ แต่น่าเสียดายที่เรากำลังวิ่งออกมาจากเวลา ดังนั้นฉันจะต้องถูกตัดออกจากเซสชั่นการเข้ารหัสอยู่ที่นี่ มีพวงของคุณสมบัติอื่น ๆ ที่ผมต้องการที่จะแสดงให้เห็นถึงสำหรับคุณ ในตัวอย่างนี้ ตัวอย่างเช่นคุณสามารถเพิ่มแม่แบบในเว็บไซต์ของคุณ ดังนั้นอาจจะมีการจัดเรียงบางส่วนของรหัส HTML ที่คุณต้องการใช้ ทุกหน้าเดียวในเว็บไซต์ของคุณและแทนวางที่ ในมุมมองของไฟล์ทุกเดียวที่คุณมีและที่เห็นได้ชัดว่าจะมีการปฏิบัติที่ไม่ดี คุณโดยทั่วไปสามารถกำหนดแม่แบบเหล่านี้ และจากนั้นในการควบคุมของคุณพูดว่า "เอาล่ะฉันใช้แม่แบบนี้." "ได้ทุกมุมมองของฉันใช้แม่แบบนี้." และสิ่งสุดท้ายที่ฉันต้องการที่จะแสดงให้คุณได้เป็นอย่างดี ที่เราไม่ได้มีเวลาสำหรับเป็นสคริปต์ข้ามไซต์ และโดยทั่วไปผมคิดว่าพวกคุณอาจจะได้เห็นใน CS50 - ผมคิดว่าเดวิดลันอาจจะพูดคุยเกี่ยวกับวิธีการที่คุณมักจะสามารถฉีด รหัสจาวาสคริปต์เป็น - มีคุณพูดคุยเกี่ยวกับเรื่องนี้ บางที? อาจจะไม่? แต่หลายครั้งที่คุณสามารถฉีดรหัสจาวาสคริปต์ที่เป็นอันตราย ลงในฐานข้อมูลของใครบางคนและถ้าพวกเขาไม่ได้หลบหนีที่ถูกต้อง แล้วเมื่อพวกเขานำเสนอข้อมูลที่กลับมาให้กับผู้ใช้ แล้วมันอาจจะเรียงลำดับของรหัสจาวาสคริปต์แบบสุ่มที่คุณไม่ต้องการที่จะเกิดขึ้น และผมจะแสดงให้เห็นถึงวิธีการที่คุณควรจะทำว่าภายใน Kohana เป็นจริงจริงๆเรื่องง่าย ฉันจะทำมันได้ในขณะนี้ใน 2 วินาทีอย่างแท้จริง สิ่งที่คุณต้องทำคือการตัดพื้นสิ่งเหล่านี้ ในสิ่งที่เรียกว่าหน่วยงาน HTML นี้ และที่จะหลบหนีทุกตัวอักษรอย่างถูกต้อง และให้แน่ใจว่าคุณไม่ได้รับปัญหานี้ [นักศึกษา] คุณสะกดการทดสอบครั้งแรกไม่ถูกต้อง [แบรนดอนหลิว] โอ้โอ๊ะ เอาล่ะนั่นคือทั้งหมดที่ผมจะร่วมกับคุณสำหรับวันนี้ สไลด์เหล่านี้จะได้รับการโพสต์ แต่เหล่านี้มักจะ ทรัพยากรเดียวที่คุณควรจะต้องได้รับการเริ่มต้นกับ Kohana คุณสามารถไปที่เว็บไซต์ พวกเขามีคู่มือการใช้งานและพวกเขายังมี API สำรวจ เราสามารถสำรวจทั้งหมดหน้าที่แตกต่างกันและฟังก์ชั่นช่วยพวกเขาได้สำหรับคุณ พวกเขามักมีข้อมูลเพียงพอในเว็บไซต์ ที่คุณสามารถใช้ในการเริ่มต้นและได้รับไปกับ Kohana มีบทเรียนที่ไม่มากผมคิดว่าสำหรับ Kohana นอก สิ่งที่พวกเขามีในเว็บไซต์ของที่นี่จึงน่าจะเป็นทางออกที่ดีที่สุดของคุณ แต่ถ้าคุณต้องการที่จะไปกับกรอบเว็บ และคุณไม่ต้องการให้มีการรับภาษาใหม่ และคุณต้องการบางสิ่งบางอย่างที่ค่อนข้างมีน้ำหนักเบาและมีเส้นโค้งการเรียนรู้ได้ง่าย แน่นอนผมจะแนะนำ Kohana นั่นอาจเป็นข้อเสนอที่ดีที่สุดสำหรับที่ สิ่งที่ตลก แต่เป็นถ้าเราใช้ Ruby on Rails, เราจะได้ทำซ้ำสิ่งที่เราเพิ่งได้ และอาจจะมากขึ้นในภายใต้ 3 นาที ไม่มีเรื่องตลก แต่การเรียนรู้ Ruby on Rails จะใช้เวลานานมาก กว่ามันจะใช้เวลาในการเรียนรู้ Kohana มันเป็นพื้นทางเลือกของคุณในสิ่งที่คุณต้องการที่จะเลือกที่จะเรียนรู้ แต่ถ้าคุณต้องการที่จะได้รับขึ้นและทำงานได้อย่างรวดเร็ว Kohana แน่นอนเป็นทางเลือกที่ดีมาก คำถามใด ๆ ที่ผ่านมาก่อนที่เราจะจบ ใช่ [นักศึกษา] วิธีที่เราจะบูรณาการที่ ในกรอบ CSS เหมือนที่คุณกำลังใช้เมื่อคุณได้รับการสอน? คำถามคือวิธีการที่เราจะบูรณาการกับกรอบ CSS? สิ่งที่เราอาจจะทำคือเราอาจจะรวมถึง โฟลเดอร์ใหม่ที่เราจะถ่ายโอนข้อมูลทุกไฟล์ CSS ของเรา แล้วเรายังต้องการเพิ่มแม่แบบใหม่ ในแม่แบบที่เราต้องการรวมถึงผู้ที่ CSS ไฟล์ เพื่อให้แน่ใจว่าพวกเขากำลังมีการอ้างอิงในทุกหน้าเดียว และจากนั้นเมื่อคุณจริงเขียน HTML, คุณเพียงแค่เพิ่มการเรียนที่เหมาะสมและ whatnot, และตัวอย่างเช่นเมื่อคุณกำลังใช้สิ่งที่ต้องการรูปแบบ ฟังก์ชั่นช่วยคุณสามารถเพิ่มค่าเพิ่มเติมในภายหลัง เพื่อระบุสิ่งที่เรียนคุณต้องการที่จะยึดติดอยู่กับสิ่งต่างๆ เพื่อพวกเขาจะได้รูปแบบได้อย่างถูกต้องและที่เป็นพื้นวิธีการที่คุณจะไป คำถามใด ๆ อื่น ๆ น่ากลัว ขอขอบคุณสำหรับเวลาของคุณและขอขอบคุณสำหรับการมา ฉันไม่ได้จะเพิ่มมากอื่น แต่สิ่งที่รวดเร็วจริงๆที่ 1 คือเราไม่ได้มีการเชื่อมโยง ในรูปแบบ โง่จริงๆ ขอเพิ่ม - จริงในมุมมองบล็อกดัชนี ขออย่างรวดเร็วจริงๆเพิ่มการเชื่อมโยงที่จะไปยังหน้าใหม่ที่ หน้าเว็บที่เราสามารถแทรกโพสต์ใหม่ เรากำลังจะทำนี้ มีอะไรที่ดีที่จะมีในกลุ่มนี้ทั้ง HTM​​L หน้าที่ผู้ช่วย ซึ่งทำสิ่งที่แตกต่างกันสำหรับคุณเพื่อให้คุณได้เห็นหน่วยงาน ทำงานที่นี่ แต่พวกเขายังมีฟังก์ชั่นที่เรียกว่า "สมอ" ซึ่งคุณสามารถพิมพ์ในบล็อก / ใหม่ และพูดว่า "โพสต์บล็อกใหม่." และมันจะสร้างการเชื่อมโยงสำหรับคุณที่ และนี้ดูเหมือนว่าจริงๆจิ๊บจ๊อยที่จะทำ แต่นี้เป็นสิ่งที่ดี เพราะสมมติว่าคุณกำลังจะย้ายเว็บไซต์ของคุณจาก 1 โดเมนไปยังอีก และถ้าคุณเพิ่งเขียนออก URL ที่ตัวเอง แล้วคุณจะต้องเปลี่ยน URL ที่ หรือบางทีคุณอาจย้ายจาก 1 โฟลเดอร์ย่อยกับโฟลเดอร์ย่อยอื่น คุณจะต้องเปลี่ยน URL ทั้งหมดที่ตัวเอง และที่ว่าไม่สนุก คุณสามารถใช้สมอนี้ที่นี่ และคุณสามารถเปลี่ยนโดเมนหรือคำนำหน้าโฟลเดอร์ย่อย ในการตั้งค่าครั้งเดียว และจากนั้นก็จะนำไปใช้ทุกที่และนี่คืออีกครั้ง เป็นตัวอย่างที่ดีของการไม่ทำซ้ำตัวเองแห้งรหัสของคุณออก ไม่ว่าคุณจะทำซ้ำตัวเองและพยายามดึงในการเรียงลำดับของแฟ้มการกำหนดค่าบางอย่าง หรือฟังก์ชั่นที่แตกต่างกันและมีการจัดการที่มันสำหรับคุณ และสิ่งสุดท้ายที่ผมอยากจะแสดงให้คุณเป็น สมมติว่าเรากำลังกลับไปที่การโพสต์นี้และฉันได้ประกอบด้วยบางเรียงความยาวจริงๆ แต่ฉันลืมที่จะรวมถึงการเขียนของฉัน ตอนนี้เมื่อฉันคลิกที่ "ส่งโพสต์" ฉันเพียงแค่สูญเสียทุกอย่าง No! เศร้าจริงๆ ดังนั้นวิธีที่คุณจัดการกับที่? นี่คือสิ่งที่เราทำ สิ่งที่เราทำที่นี่สำหรับฟังก์ชั่นเหล่านี้พื้นที่อินพุตและพื้นที่ข้อความ ถ้าเรารวมถึงพารามิเตอร์ที่สองแล้วค่าของพารามิเตอร์ที่สองที่ เป็นไปได้สิ่งที่เขตข้อมูลจะถูกบรรจุครั้งแรกกับ สิ่งที่เราจะทำคือการควบคุมในบล็อกของเรา เราสามารถผูกตัวแปรอื่น เรียกว่า "ค่า" อาจจะ และผ่านในอาร์เรย์การโพสต์อย่างแท้จริง ซึ่งหมายความว่าหากการตรวจสอบล้มเหลว ส่งผ่านไปยังอาร์เรย์ฉันโพสต์ที่ผมส่งจากคำขอที่ผ่านมา และวิธีการที่ฉันสามารถใช้ค่าจากการส่งผ่านของฉัน ที่จะเพิ่มจำนวนประชากรของฟิลด์ ตอนนี้ฉันสามารถทำสิ่งที่ต้องการค่าเขียน และค่าของร่างกายและวิธีการที่ตอนนี้ถ้าฉันทำบางสิ่งที่สุ่ม และคลิก "ส่งโพสต์" จากนั้นก็อยู่ที่นั่น แต่เรากำลังจะทำงานเป็นปัญหาอื่น ที่ทำงาน แต่ถ้าผมไปที่หน้าครั้งแรกมาก มันจะผิดพลาดและที่ว่าเพราะครั้งแรกที่ เราไปที่หน้าตัวแปรการโพสต์นี้ยังไม่ได้รับการกำหนดไว้ยัง มันเป็นโมฆะ มันไม่ได้มีอยู่ และสิ่งที่เราอยากจะพูดคือถ้าคีย์นี้มีอยู่แล้ว แล้วกลับค่าของแถวนี้ แต่ถ้าคีย์ไม่อยู่แล้วกลับสตริงที่ว่างเปล่า นั่นคือการทำงานที่เราต้องการที่นี่ เราต้องการที่จะตรวจสอบว่าที่สำคัญที่มีอยู่ก่อนที่จะพยายามที่จะใช้อาร์เรย์ และโชคดีที่พอ Kohana ยังช่วยให้เราฟังก์ชั่นผู้ช่วยที่ พวกเขามีชุดทั้งหมดนี้ฟังก์ชั่น ภายใต้ชื่อ ARR, สั้นสำหรับอาร์เรย์ และพวกเขามีฟังก์ชั่นที่ 1 เรียกว่า "ได้รับ" และคุณสามารถผ่านในอาร์เรย์ และคุณสามารถผ่านในชื่อของคีย์ จากนั้นก็เป็นสิ่งที่จะทำคือมันจะพยายามที่จะได้รับสำคัญที่ แต่ถ้าที่สำคัญที่ไม่ได้มีอยู่ในอาร์เรย์ แล้วมันจะกลับว่างเปล่าหรือเรายังสามารถระบุค่าเริ่มต้นผมเชื่อว่า ซึ่งเป็นสิ่งที่ดี ตอนนี้ถ้าเราทำสิ่งเดียวกันอีกครั้ง แล้วคุณจะเห็นในขณะนี้การทำงานครั้งแรกรอบ และอีกครั้งถ้าเราพิมพ์ลงในบางสิ่งที่สุ่ม และพยายามส่งแล้วมันอยู่ที่นั่น และผมคิดว่าผมยังสามารถแสดงให้คุณเห็นวิธีการเพิ่มแม่แบบได้อย่างรวดเร็วจริงๆ เราสามารถทำอะไรที่เป็นครั้งแรกที่เราสามารถเพิ่มมุมมองใหม่ที่เรียกว่า "template.php" อ่านที่อยู่ในโฟลเดอร์ที่ และสิ่งที่ผมจะทำคือผมจะพิมพ์ออกมาสิ่งที่เรียกว่า "เนื้อหา" ซึ่งจะเป็นเนื้อหาหลักของฉัน และอาจจะที่ด้านล่างสุดฉันจะเพิ่มการพูด ลิขสิทธิ์ [ไม่ได้ยินคำถามของนักเรียน] [แบรนดอนหลิว] อาจจะเป็นแม่แบบพื้นฐานสุดฉันต้องการใช้ ฉันต้องการที่จะมีโฟลเดอร์ที่มีลิขสิทธิ์ของฉันในทุกหน้าเดียว และตอนนี้สิ่งที่ผมกำลังจะทำภายในการควบคุมของฉัน ตอนนี้แทนที่จะพูดว่า "ขยายควบคุม" ฉันจะพูดว่า "ขยาย Controller_Template" และตอนนี้แทนที่จะพูดว่า "การตอบสนองของร่างกายเท่ากับมุมมองนี้" ฉันจะพูดว่า "เนื้อหาแม่แบบนี้ -" และผมคิดว่า - ฉันจะใส่เครื่องหมายเท่ากับ? ฉันลืม ใช่ฉันคิดว่าดังนั้น และตอนนี้ฉันจะตั้งค่าตัวแปรเนื้อหาที่จะเท่ากับมุมมอง ฉันสามารถทำเช่นเดียวกันที่นี่ และตอนนี้ถ้าผมรีเฟรชคุณสามารถเห็นในขณะนี้ลิขสิทธิ์นี้ถูกเพิ่มมี และเพียงแค่ทำให้บางการโพสต์แบบสุ่ม และจากนั้นอีกครั้งคุณจะเห็นว่าลิขสิทธิ์เป็นที่ด้านล่างสุดของหน้าเว็บ ใหญ่ นั่นคือทั้งหมดที่ผมอยากจะแสดงให้พวกคุณ [เสียงปรบมือ] คำถามใด? [CS50.TV]