[სემინარი] [kohana: A Lightweight PHP Framework] [Brandon Liu] [ჰარვარდის უნივერსიტეტის] [ეს არის CS50.] [CS50.TV] Hi ყველას. ჩემი სახელი არის Brandon. მე junior აქ კოლეჯში აკეთებს კომპიუტერული მეცნიერების, და დღეს ჩვენ ვაპირებთ ვისაუბროთ Kohana, რომელიც არის PHP ვებ განვითარების ფარგლებში. დღეს იქნება ცოცხალი კოდირების სემინარი, ამიტომ მე ძირითადად აპირებს დახარჯოს 5-10 წუთის აეხსნა რა kohana არის, და შემდეგ მე სიტყვასიტყვით აპირებს ააშენოს სუპერ მარტივი წაკითხვა თქვენ უფლება აქ ფაქტიურად ნულიდან. ჩვენ ვაპირებთ ჩამოტვირთოთ კოდი დან kohana ნახვა, და ჩვენ ვაპირებთ დავიწყოთ აშენებს წაკითხვა, და იმედია ეს იქნება ძალიან სასწავლო, იმიტომ, რომ თქვენ ნახავთ ალბათ იქნებ მე გარკვეული შეცდომები, და დაინახავთ ჩემთვის ფეხზე მათ, ან თქვენ ნახავთ ჩემი აზროვნების პროცესი, როგორც მე აშენება ამ დღიურში, და იმავდროულად, თქვენ ასევე გაეცნონ ფარგლებში თავად. იმედია ეს იქნება ძალიან სასწავლო განხორციელება. პირველ რიგში, რა არის ჩარჩო? თუ თქვენ უკვე აღების CS50 ჯერჯერობით, თქვენ ნამდვილად არ მუშაობდა ნებისმიერი ფარგლებში მაინც, და რაც არის ეს. თქვენ ალბათ კეთდება 1 ვებ განვითარების pset უკვე, და ვთქვათ თქვენ განვაგრძოთ ვებგვერდები და შენარჩუნება შენობა საიტებზე. თქვენ დაიწყოს შენიშნავს ცოტა რამ. პირველი, რაც თქვენ შეამჩნევთ არის, რომ თქვენ ალბათ აკეთებს იგივე რამ უსასრულოდ ყველა დროის, რამ, როგორიცაა დასუფთავების მომხმარებლის შეყვანის მონაცემები, რამ, როგორიცაა ორგანიზება თქვენი ფაილი გარკვეული გზა. სხვა რამ თქვენ ასევე ალბათ შეამჩნევთ, რომ თქვენი კოდი შეიძლება დაიწყოს გახდეს ძალიან, ძალიან რთული, და თქვენ შეიძლება დატოვონ ეს ბინძურ და უბრალოდ ძალიან რთული შენარჩუნება ეს, ან თქვენ შეიძლება დაიწყოს სტრუქტურის თქვენი კოდი და რაც მოდულარული გარკვეული გზები, რათა ის უფრო maintainable. ეს არის სადაც web ფარგლებში ძირითადად შემოგრიალდნენ ეს ხალხი, ვინც ააშენა ბევრი საიტები, მათი თქმით, "ჩვენ არ უნდა დაბრუნდეთ წინა თითოეული დროს ჩვენ აშენება ნახვა." "რატომ არ გვაქვს მხოლოდ პაკეტი, რომელიც არ ეს ყველაფერი თქვენთვის თითოეული დრო გსურთ აშენება ნახვა? " და ისე, რომ როდესაც თქვენ მიიღოს ახალი ნახვა, თქვენ მხოლოდ ფოკუსირება რა ზუსტად ამ კონკრეტულ ნახვა არის. თქვენ არ უნდა გავიმეორო ყველა სხვადასხვა კონფიგურაციის და გამოყოფის კოდები და გადაწერა კოდი რომ თქვენ ხშირად უნდა გავაკეთოთ, როდესაც თქვენ მიღების საიტებზე. იდეა ისაა, რომ ჩარჩო საშუალებას გაძლევთ დაწეროთ უმაღლესი დონის კოდი გარეშე ფიქრი ქვედა დონის დეტალები. ქვედა დონის დეტალი შესაძლოა რაღაც საქმე დასუფთავების შესახებ შეტანილი მონაცემები. ეს არის ის, რასაც თქვენ უნდა ნამდვილად არ უნდა ფიქრი. თქვენ უნდა ფოკუსირება რა თქვენი ვებ გამოყოფა რეალურად შესახებ. ეს აგარიდებთ ბევრი boilerplate კოდი. ეს არის არქიტექტურის თქვენი პროექტი. ყველაზე პოპულარული ერთი იქნება Model-View-Controller, რომელიც მე ვაპირებ ვისაუბრო მეორე. და ბევრი ჯერ ეს ჩარჩოები მოიცავს კომპლექტი პროცედურები, წესები და საუკეთესო პრაქტიკის ისარგებლებთ ასე რომ, როდესაც თქვენ მიიღოს ინტერნეტში ფარგლებში თქვენ უნდა დაწეროთ თქვენი კოდი გარკვეული გზა, და ეს ზოგადად შეთანხმებული პრინციპების საზოგადოებას, რომ ზოგადად მიღებულია, რომ იყოს კარგი გზა წერა კოდი. რაც თქვენი კოდი უფრო maintainable, უფრო გამოსადეგი, ა.შ. და ა.შ.. და ბოლოს, რამ მინდა აღვნიშნო შესახებ ფარგლებში წინააღმდეგ ბიბლიოთეკების ამ იდეის შესახებ საინვესტიციო კონტროლი, და რამ არის ამ. განსხვავება ბიბლიოთეკა და ჩარჩო არის, რომ ბიბლიოთეკა თქვენ ჯერ კიდევ წერის ძირითადი პროგრამა, და თქვენ ერთგვარი invoking ბიბლიოთეკა და მოუწოდებენ ბიბლიოთეკა რაღაც თქვენთვის. განსხვავება ბიბლიოთეკა და ჩარჩო ის არის, რომ პროექტის ფარგლებში იწყება კონტროლი, და ეს აღვიძებს თქვენი კოდი, ასე რომ თქვენ შეგიძლიათ ვფიქრობ, რომ ეს - ეს არის, რის გამოც ეს ე.წ. ჩარჩო - ფარგლებში უზრუნველყოფს ამ ჩარჩოს და სტრუქტურა თქვენი კოდი, და თქვენ შეავსოთ ხვრელებს, და ეს კიდევ უფრო აშკარა მეორე როდესაც ხედავთ დავიწყებ დაწერა კოდი კონტექსტში ფარგლებში. თქვენ ნახავთ, რომ მე შევსების ხარვეზი, და ჩარჩო სახის კონტროლის ყველა მოძრავი ცალი, და მე უნდა დააყენოს ცალი სწორი ადგილებში. დღეს ჩვენ ვაპირებთ ვისაუბროთ kohana, რომელიც არის ერთ ერთი მრავალი PHP ფარგლებში. არსებობს web ფარგლებში, და არსებობს პირობა, პრაქტიკულად ყველა ერთ ენაზე, და მე კრეფა kohana რადგან kohana სავარაუდოდ და, ზოგადად აღიარებულია, როგორც ყველაზე იოლი PHP ფარგლებში შეარჩიო. ეს ყველაზე მსუბუქი. არსებობს სხვა პირობა არსებობს, რომ მოდის და მრავალი, მრავალი სხვა მახასიათებლები, მაგრამ ისინი, როგორც წესი, უფრო რთულია შეარჩიო. და ბოლოს, kohana იყენებს MVC არქიტექტურაში. ეს მსუბუქი საკმარისი, რომ ჩვენ შეგვიძლია სიტყვასიტყვით აშენება პროექტი აქ თვალწინ შენი თვალები, და თქვენ შეგიძლიათ საკმაოდ ბევრი დაიცვას ერთად საკმაოდ ადვილად. რა არის MVC არქიტექტურაში? იგი დგას Model-View-Controller, და იქნებ თუ ფიქრობთ კოდი თქვენ უკვე წერილობით ჯერჯერობით ზოგიერთი თქვენი ვებ განვითარების psets თქვენ შეიძლება ნახოს გარკვეული ამ, მაგრამ, როგორც წესი, როდესაც თქვენ დავიწყოთ წერა უფრო რთული ვებ განაცხადის, სამმართველოს შორის 3 სეგმენტების უფრო და უფრო აშკარა. მე ასახული MVC აქ სახის როგორც დასტის, და ხშირად თქვენ მოისმენს ადამიანები საუბრობენ stacks ვებ განვითარება, და ეს ასახავს იმ აზრს, რომ თითოეული ფენის, თითოეული კომპონენტი ნამდვილად ცდილობს მხოლოდ კომუნიკაცია შორის 2 სხვა კომპონენტები. ვინმე იღებს თქვენი ნახვა, როგორც კლიენტის ან ბრაუზერში. მათ ურთიერთქმედება თქვენი პროგრამის მეშვეობით ხედი კოდი. ხედი კოდი ურთიერთქმედებს კონტროლერი. კონტროლერი ურთიერთქმედებს მოდელი, და მოდელი ურთიერთქმედებს SQL მონაცემთა ბაზაში. და არ არსებობს hopping შორის თუ წერთ თქვენი კოდი სათანადოდ. რა ეს ყველაფერი გავაკეთოთ? მოდელი არსებითად არის ნაჭერი კოდი, რომელიც ეხება თქვენი მონაცემები. ყველაფერი, რაც ეხება თქვენს მონაცემთა ბაზაში, ობიექტები, რომ თქვენ შესანახად, ან მიღება იმ ობიექტების მონაცემთა ბაზა, რომ ყველა სიფრთხილით მიერ მოდელი. იქნებ თქვენ გაქვთ ობიექტების თქვენს მონაცემთა ბაზაში. ჩვენ ვაპირებთ, რომ შევქმნათ მოდელი მქონე ვუყოთ პოსტი, ასე რომ პოსტი შეიძლება ჰქონდეს გარკვეული ატრიბუტები მას. თქვენ შეიძლება ჰქონდეს ფუნქცია გარშემო შენახვის იმ შეტყობინება ან ძებნისათვის შეტყობინება ან ფილტრაცია შეტყობინება და ა.შ. და ა.შ., და რომ ყველა კოდი, რომელიც სიფრთხილით მიერ მოდელი. კონტროლერი არის ერთგვარი განაცხადის ლოგიკა, და ბევრი სხვადასხვა რამ შეიძლება წავიდეთ განაცხადის ლოგიკა. თუ ვსაუბრობთ სხვადასხვა API, რომელიც შეიძლება იყოს, სადაც თქვენ საქმე განაცხადის ლოგიკა. თუ თქვენ ცდილობს, რათა მონაცემების მრავალჯერადი სხვადასხვა მოდელები და უნდა დააკავშიროთ მათ რამდენიმე გზა, რომ ხშირად შეიძლება სიფრთხილით მიერ კონტროლერი. მაგალითად, Facebook, თუ თქვენ მეგობარს ვინმე, მაშინ, ალბათ, რომ აქტით დგინდება ურთიერთობისათვის შეიძლება გაკეთდეს კონტროლერი. და ბოლოს, ხედი კოდი, რომელიც გამოიმუშავებს, რაც თქვენ რეალურად ვხედავ. ბევრი ჯერ მე ვფიქრობ, CS50 psets ისინი ნამდვილად არ მოგიწოდებთ თქვენ ბიჭებს გამოყოფა ამ 3 რამ. თქვენ ალბათ ამ დიდი, ხანგრძლივი ფაილის სადაც ზედა თქვენ გააკეთოთ ჯიბის SQL შეკითხვაზე და იქნებ გავაკეთოთ ზოგიერთი დამუშავება მონაცემები თქვენ მოძიებულია ბაზაში, და მაშინ ყველა თქვენი HTML ბოლოში. და თქვენ შეიძლება აღმოაჩინოთ, რომ, როგორც თქვენ შექმნათ უფრო და უფრო გვერდები რომ თქვენ აპირებს გარკვეული კოდი განმეორება, და ასევე, საქმე ის არის, ფაილის იღებს მართლაც დიდი და გრძელი და ხდება unwieldy მართვა. მიზეზი, რის გამოც MVC იმდენად კარგად განიხილება არის მთელი რიგი მიზეზების გამო. პირველი, რაც არის რაღაც მოუწოდა გამიჯვნა შეშფოთება რომელიც იმ აზრს, რომ როდესაც თქვენ - იდეალურად 1 ცალი კოდი უნდა გავაკეთოთ, 1 რამ და ამის გაკეთება ნამდვილად კარგად, და თქვენ არ უნდა დააკავშიროთ ცალი კოდი, რომ არ განსხვავებული რამ. მაგალითად, ნახოთ კოდი და მოდელის კოდი, ისინი ნამდვილად არ უნდა იყოს დაკავშირებული. ისინი არ უნდა იყოს იგივე ფაილი, ასე რომ, როდესაც თქვენ შეგიძლიათ, ცალკე მათ ასე რომ ადვილი შენარჩუნება. სხვა რამ არის კოდი reuse. თქვენ შეიძლება აღმოჩნდეთ წერა იგივე SQL შეკითხვაზე ან აკეთებს მსგავსი queries რომელიც შეიძლება ამოღებული შევიდა 1 ფუნქცია, და ეს იდეა უკან მოდელები და კონტროლერები, რომელსაც იგი ცალკე ფუნქცია, რომ თქვენ შეგიძლიათ reuse სხვადასხვა ადგილებში თქვენი პროექტი. და ბოლოს, რომ მიბმული საშრობი თქვენი კოდი, ან არ იმეორებს საკუთარ თავს, არ გავიმეოროთ თავს. ეს არის ძალიან გასაგები განვითარებას. როდესაც თქვენ, თქვენ არ მინდა გავიმეორო თავს, რადგან თუ ვიმეორებ თავს,  ეს ბევრად უფრო ძვირი შენარჩუნება. თუ თქვენ გსურთ შეცვალოთ 1 ნივთი, თქვენ უნდა შეცვალოს იგი ყველგან, და რომელსაც მივყავართ შეცდომები, და ეს საშინელებაა. ყველა უფლება. ნებისმიერი კითხვები ჯერჯერობით შესახებ kohana ყველა? დიდი. ახლა ჩვენ ვაპირებთ ჩაყვინთვის შევიდა ცოცხალი კოდირების სხდომაზე, და იმედია ყველაფერი კარგად იქნება. ვაპირებ ძირითადად ავაშენოთ ეს ნახვა ერთი ჩემი დისტანციური სერვერები, და ამ გზით თქვენ ბიჭები ასევე შეგიძლიათ იხილეთ საიტზე და შედიხართ საიტზე, და ასევე გარემოს უკეთ არის, ვიდრე ჩემი დისტანციური მანქანა, იმიტომ, რომ ის გაშვებული Linux ნაცვლად OS X. ჩვენ ფაქტიურად დაწყებას აპირებს. KohanaFramework.org. მე ვაპირებ ჩამოტვირთოთ კოდი ვებგვერდზე. მე ვაპირებ დააკოპირეთ ლინკი მისამართი, გადასვლა ჩემს სერვერზე, გადმოწეროთ, და მე ვაპირებ ამონაწერი იგი. [სტუდენტი] რა არის უდიდესი შეგიძლიათ ტექსტი? [Brandon Liu] ის არის, რომ უკეთესი? [სტუდენტური] არის ის, რომ შესაძლებელია? [Brandon Liu] ჰო, რომ ჯარიმა. მე გადმოწერილი ZIP ფაილი და unzipped რომ შევიდა დირექტორია მოუწოდა kohana, და ჩვენ ვაპირებთ გადარქმევა რომ CS50-kohana, და მოდით წავიდეთ შემოსული გასაოცარია. აქ ხედავთ bunch სხვადასხვა ფაილები. ყველაზე თქვენ შეგიძლიათ იგნორირება - we're არ აპირებს გაიაროს ყველა ერთი ფაილი, რომ აქ იმიტომ, რომ ჩვენი დროის შეზღუდვების, მაგრამ ზოგადად, როდესაც თქვენ დააყენოთ kohana, პირველი, რაც თქვენ არის მიდიხარ დირექტორია, და თქვენ ძირითადად დაკავდით გარემოს ტესტები და whatnot დარწმუნდით, რომ გარემოს სწორად მითითებული აწარმოებს kohana და დარწმუნდით, რომ ყველაფერი კარგად არის. თქვენ ხედავთ, საუკეთესო რამ გავიდა, მაგრამ ზოგადად ყოველთვის გადაეყარონ ამ 1 პრობლემა სადაც იგი აცხადებს, რომ ზოგიერთი საქაღალდე არ არის ჩაწერადი, და ეს იმიტომ, რომ ზოგიერთი უფლებები. მე არ ვიცი, რამდენად თქვენ ბიჭები არ შეიტყო ფაილის უფლებები CS50, მაგრამ თუ ვებ განვითარება, თქვენ აპირებს გადაეყარონ ამ საკითხზე ბევრი. მე ვაპირებ, რათა ის ჩაწერადი და ვფიქრობ, ასევე უნდა - იქ ჩვენ წავიდეთ. Okay, ასე რომ, ახლა თქვენ ხედავთ, ყველაფერი გავიდა, და ახლა გეტყვით, გადარქმევა install.php ფაილი. მე ვაპირებ გადაადგილება install.php ფაილი installed.php, და ახლა თუ მე ამოცნობა, ეს მაძლევს გარკვეული შეცდომა, და ეს არის სადაც გამართვის მოდის შემოსული ეს არის, სადაც შეგიძლიათ ნახოთ რაც რეალურად მოხდება. საქმე ის არის, ჩვეულებრივ, kohana ვარაუდობს, რომ თქვენი პროექტი არის root დირექტორია თქვენი დომენი, ამიტომ ველოდებით თქვენ უნდა იყოს demo.brandonkliu.com. ჩვენ უნდა ვუთხრათ, რომ ეს რეალურად subfolder. ეს წელს subfolder მოუწოდა CS50 kohana. საქმე იმაშია, რომ ის არასწორად CS50-kohana როგორც რაღაც, რაც მე ახსნას თქვენს მეორე. მაგრამ უნდა გითხრათ, რომ ის, რაც უნდა ველოდოთ. რასაც ჩვენ ვაპირებთ გავაკეთოთ არის ჩვენ ვაპირებთ წასვლას ამ საქაღალდეში მოუწოდა bootstrap.php, რომელიც არის კონფიგურაციის საქაღალდეში, სადაც ბევრი სხვადასხვა რამ შეიქმნა. გავხსნა რომ. მაშინ იქნებ ერთი პირველი რამ მე გავაკეთებ არის შეცვლის დრო ზონაში. და მერე ვნახოთ. Aha! უფლება აქ. არსებობს რამოდენიმე განსხვავებული კონფიგურაციის გამონათქვამები აქ, მაგრამ ერთი მე ეძებს ამ რამ მოუწოდა ბაზა URL, და იყოს მე ეს მითითებული kohana, მაგრამ მე ვაპირებ, რომ შეიცვალოს, რომ CS50-kohana, და მე ვფიქრობ, რომ უნდა გაასწორონ ის. დიახ, დიდი. By default, ვხედავ, რომ ის მუშაობს, მისი თქმით, "Hello World". სად რომ მოდის? როგორ არ მივიღებთ Hello World? სადაც ზუსტად არის კოდი, რომელიც რეალურად წერდა, რომ? უნდა გვესმოდეს, რომ, მე წარმოგიდგინოთ ამ კონცეფციის მოუწოდა მარშრუტიზაციის. საკმაოდ ბევრი ყველა ვებ ფარგლებში აქვს კონცეფცია მოუწოდა მარშრუტიზაციის, რომელიც არის ნაჭერი პროგრამული უზრუნველყოფა, რომელიც რუკაზე გარკვეული URL გარკვეული ნაჭერი კოდი თქვენს ფარგლებში. მაგალითად, თუ თქვენ გაქვთ რაიმე URL და წავიდეთ ზოგიერთი URL როგორიცაა foo.com / წაკითხვა / ყველა მაშინ რა ფარგლებში აპირებს - ან თუნდაც რა kohana აპირებს - არის ის აპირებს იპოვოს კლასის მოუწოდა კონტროლერი დღიურში, და ის აპირებს ფუნქცია სახელად action ყველა. მე ვიცი, მე ვსაუბრობ კლასი და ფუნქციები, და მე ვიცი, რომ თქვენ ბიჭები არ დაფარული კლასები და ფუნქციები in CS50, მაგრამ ახლა, შეგიძლიათ წარმოიდგინოთ, რომ კლასების, მხოლოდ ჯგუფის ფუნქციები, გზა დაჯგუფება ფუნქციების ერთად. ეს მართლაც ყველა თქვენ უნდა იცოდეთ. ახლა თუ ჩვენ შევხედოთ ჩვენი საქაღალდეში სტრუქტურა, შიგნით განაცხადის საქაღალდეში არსებობს სხვა საქაღალდეში მოუწოდა კლასების, და სხვა ფოლდერები უწოდებენ Controller და მოდელი. თუ გადავხედავთ შიგნით Controller საქაღალდეში, ჩვენ ვხედავთ, რომ არის ფაილი სახელად მოგესალმებით, და თქვენ ხედავთ, აქ არის კლასი მოუწოდა Controller მოგესალმებით, და არსებობს ფუნქცია მოუწოდა აქცია ინდექსი, და რა არ არის ის ადგენს ორგანოს თქვენი პასუხი Hello World. რომ სადაც კოდი იწერება. მეორე საკითხი, ასევე, მე არ წასვლა blah, blah, blah, / welcome / ინდექსი. როგორ მოხდა, მე დასრულდება მდე აქ? ისე, რომ მხოლოდ იმიტომ, აქ ბოლოში ჩვენი ჩატვირთვის ფაილი სადაც ჩვენ მითითებული ჩვენი მარშრუტები თქვენ ხედავთ, რომ ისინი მითითებული ზოგიერთი ნაგულისხმების თქვენთვის. სტანდარტულ კონტროლერი არის მისასალმებელი. სტანდარტულ აქცია ინდექსი. ამიტომ, როცა ჩვენ არაფერი იქ ავტომატურად წავიდა Welcome კონტროლერი და ინდექსი მოქმედება. Everything აზრი აქამდე? ახლა თქვენ შეგიძლიათ უფრო მეტი, ვიდრე უბრალოდ წასვლა Controller და კონკრეტული action. თქვენ ასევე შეგიძლიათ გაივლის პარამეტრების კონტროლერი. ისევე, როგორც, მაგალითად, მე ვაპირებ, რომ დაამატოთ კიდევ ერთი აქცია ამ კონტროლერი გაჩვენოთ. მოდით მოვუწოდებთ ამ action ექო, რადგან ის აპირებს გითხრათ, რასაც თქვენ მისცეს მას, და ა.შ. მე ძირითადად აპირებს დაიბრუნოს პარამეტრი, რომელიც იქნება იგზავნება ჩემთვის routing პროგრამა, და როგორც ხედავთ აქ, ამ ხაზის აქ, თქვენ ხედავთ, რომ ეს ნიშნავს იმას, რომ თქვენ გაქვთ კონტროლერი, და თქვენ გაქვთ /, და თქვენ უნდა ქმედება, და თქვენ გაქვთ სხვა /, და რომ იქნება პარამეტრების, და იმიტომ, რომ ჩვენ ამ სახელის ID შიგნით კუთხური ფრჩხილები, რაც იმას ნიშნავს, რომ ჩვენ დასახელებისგან ამ პარამეტრის ID. მოგვიანებით ჩემი კონტროლერი კოდი თუ მინდა აითვისებდა სამფლობელო, რომ პარამეტრი, შემიძლია კოდი დავწერე, მოვძებნოთ პარამეტრი დაასახელა ID. ის, რაც მე აქ, და მე ვაპირებ დაბრუნებას და აცხადებენ, "თქვენ განაცხადა, რომ". და ახლა თუ მე წასვლა ჩვენი ნახვა, მე cs50-kohana/welcome/echo/Helloooo-- oh, ეს უფლება. არის 1 ნაბიჯი I დატოვეს. ეს არის ნაწილი ცოცხალი კოდირების იდეა. აი 1 რამ. ვნახოთ. ასე რომ, როგორც წესი, იყოს ბევრი ამ ვებ პროგრამები თქვენ უნდა შეიცავდეს ამ index.php რამ თქვენს URL, რადგან იდეა index.php არის ერთგვარი შესვლის წერტილი თქვენი განაცხადი, მაგრამ, რა თქმა უნდა, ეს ერთგვარი შემაშფოთებელი აქვს. თქვენ არ მინდა, რომ უნდა index.php გამოჩნდება თქვენი URL, და საკმაოდ ბევრი ყველა ვებ ჩარჩოს გარეთ ყუთი აქვს ამ index.php პრობლემა, და ასე რომ თქვენ უნდა მიიღოს გარკვეული ზომები, რათა შეძლებს ამოიღონ რომ. და ა.შ. ამ შემთხვევაში, ის, რასაც ჩვენ ვაპირებთ, ჩვენ ვაპირებთ გამოვიყენოთ ფაილი სახელად. htaccess, და ეს არის ის, რომ სპეციფიკური Apache სერვერზე, და ეს შეიძლება გავაკეთოთ რამ, როგორიცაა ხელმეორე მისამართები და გადამისამართება მისამართები და ა.შ. და ა.შ., და kohana არის ლამაზი საკმარისი თარგი. htaccess ფაილი რომ ჩვენ შეგვიძლია გამოვიყენოთ. როგორც ხედავთ, არსებობს ფაილი არსებობს ე.წ. example.htaccess, და ჩვენ ვაპირებთ, რომ კოპირება უნდა. htaccess. მე ვაპირებ გახსნა და შეცვალონ ის, და ძირითადად ეს იმას bunch სხვადასხვა რამ. ძირითადი ხაზი შეგიძლიათ შევხედოთ არის სწორი აქ. იდეა არის, რომ ეს ქმნის წესი, რომელიც ამბობს, "Okay, რასაც თქვენ აკრიფოთ, prepend index.php, რომ." თქვენ ხედავთ, რომ. *. დგას არაფერს, ემთხვევა არაფერი, და შემდეგ მეორე ნაწილი index.php / $ 0, და $ 0 ეხება, რაც იყო შესაბამისი ადრე. ამჯამად რომ აზრი? მაგრამ ნამდვილად მთავარია, მინდა, რომ შეიცვალოს შეცვალოთ ამ ხელმეორე ბაზა, რომელიც არის URL ბაზა. ეს ერთგვარი ვარაუდობს, სადაც თქვენ სამუშაო. მე ვაპირებ რომ დაამატოთ CS50 kohana რომ, და რომ გზა ახლა თუ ამოიღონ index.php, უნდა იმუშაოს, და მე ვაპირებ რომ დაამატოთ ზოგიერთი ნომრები რათა ნახოთ, რომ ეს მართლაც გააკეთეს მუშაობა. ჟღერს კარგი. ნებისმიერი კითხვები აქამდე? [სტუდენტური] როგორ მოხდა ეს ვიცი, რომ 123? ის არის, რომ არგუმენტი? ზუსტად. შეგიძლიათ წარმოიდგინოთ, რომ ისევე, როგორც არგუმენტი. მაგრამ უცნაური რამ, თუმცა, არის ის, რომ გზა kohana აკეთებს არის ისინი არ აკეთებენ ზუსტად ისევე, როგორც არგუმენტი. თქვენ უნდა დაიბრუნოს ის მოსწონს ეს. თქვენ უნდა დაიბრუნოს თხოვნის ობიექტი და ითხოვენ პარამეტრი, რომელიც დაასახელა ID, და რომ სახელი ID მოდის, რომ ჩატვირთვის ფაილი რომ მე აჩვენა, ადრე, და სახელი ID იყო იმ კუთხე ფრჩხილებში, და რომ ის, თუ როგორ დაიბრუნოს იმ პარამეტრებს. გასაოცარია. ნებისმიერი სხვა კითხვები? როგორც ვთქვი, კონტროლერები, მათ გაუმკლავდეს განაცხადის ლოგიკა, ასე რომ 1 მაგალითად, სადაც შეგიძლიათ ნახოთ that's - ეს ძალიან ელემენტარული, მაგრამ მაინც გამოყენების ლოგიკა, იდეა grabbing პარამეტრი და შექმნა ახალი string რომელიც ამბობს, "თქვენ თქვით, blah," და შემდეგ spitting რომ უკან თქვენ. და საერთოდ, რას აკეთებთ თქვენ შექმნათ სხვადასხვა კონტროლერები. თქვენ შექმნათ ცალკე კონტროლერები სხვადასხვა კუთხეში თქვენი ნახვა. დღეს ჩვენ ვაპირებთ, რომ ძალიან მარტივია ნახვა, და ეს იქნება ძალიან ძირითადი ბლოგზე. ჩვენ ვაპირებთ, რათა ახალი კონტროლერი მხოლოდ ფორუმზე დღიური. მაგრამ შემდეგ მე რომ დაამატოთ კომენტარები დღიურში, მერე, ალბათ, გინდათ ახალი კონტროლერი მათთვის კომენტარი. თუ მინდოდა დაამატოთ წევრებს, მე, ალბათ, დაამატოთ ახალი კონტროლერი იმ წევრებს, და საერთოდ, იდეა არის, რომ როდესაც თქვენ გაქვთ ახალი მოდელი, ახალი მონაცემები ობიექტი, რომელიც თქვენ საქმე, თქვენ გაქვთ ერთი კონტროლერი, რომ მონაცემები ობიექტი. დღეს ჩვენ მხოლოდ იმუშავებს 1 მონაცემები ობიექტი, და ეს იქნება შეტყობინება, თქვენ ასევე შეგიძლიათ ვფიქრობ მონაცემები ობიექტების შესაბამისი მაგიდები. ზოგადად, თითოეული მაგიდა შეესაბამება 1 ტიპის მონაცემები ობიექტი, ამიტომ ჩანაწერის მაგიდა 1 ჩანაწერი მოდელი, რომელსაც ექნება 1 პოსტი კონტროლერი შესაბამისი რომ, და იგივე კომენტარი, იგივე მომხმარებლებს, და ასე შემდეგ და ასე შემდეგ. და ეს ზოგადი წესი thumb. იქ იქნება განსაკუთრებულ შემთხვევებში, სადაც თქვენ შეიძლება განსხვავდება, რომ მაგრამ 90% იმ დროს, რომ ის, რაც თქვენ უნდა აკეთებს, და მე შენ გაჩვენებ რომ ის, რაც ჩვენ უნდა აკეთებს დღეს. 1 more კონცეფცია სანამ ჩვენ ჩაყვინთვის დააბრუნებდა კოდი ამ იდეის ობიექტი relational რუკების. შენ უკვე გაკეთდა ვებ განვითარების pset, და ვნახე, რომ თქვენ SQL შეკითხვაზე, და რასაც იგი ბრუნდება ხართ რიგები. თქვენ მიიღებთ ამ რიგები, და თქვენ ინდექსი მათ რამდენიმე სახელი, სახელი სვეტი და მაგიდა, და რომ ის, თუ როგორ მუშაობს ის, და ეს შეიძლება ცოტა cumbersome. მაგრამ გარდა ამისა, თუ თქვენ გაქვთ ურთიერთობების თქვენს მონაცემთა ბაზაში, მაგალითად, თუ მაქვს კომენტარი და პოსტი, მაშინ იქნებ მინდა დაიბრუნოს მშობელი პოსტი კომენტარი. თუ გამოვიყენო უბრალოდ რიგები SQL, მაშინ ყველა შემიძლია არის ID მშობლის ჩანაწერი და არა ფაქტობრივი ჩანაწერი თავად. მაგრამ როდესაც ჩვენ კოდირების, რაც ჩვენ რეალურად გვინდა არის რეალურად დაიბრუნოს  მშობელი პოსტი თავად ხანდახან. რა ობიექტი relational mapping არ არის ეს ხდება შედეგების მონაცემთა ბაზის მოთხოვნის და აყენებს მას ობიექტების თქვენ, რომლებიც ბევრად გავალამაზოთ მუშაობა ვიდრე ჩვეულებრივი კოლექტორები და რიგები. მაგალითად, ახლა, როდესაც მე მაქვს შეკითხვა, ალბათ, და მინდა, რომ აითვისებდა მისი მშობელი ჩანაწერი, და მე იქნებ კომენტარის arrow ჩანაწერი, მაშინ რეალურად მომეცი ჩანაწერის ობიექტი შესაბამისი ფაქტობრივი მშობელი ჩანაწერი, არა მხოლოდ ზოგიერთი ID, რომელიც მე სხვაგვარად უნდა გამოიყენოს და კიდევ SQL შეკითხვაზე დაიბრუნოს ჩანაწერი, რომელიც cumbersome და არასაჭირო. და უფრო მეტიც, ობიექტების ყველა ამ მონაცემების რიგები შევიდა ობიექტების, ასევე შეგიძლიათ დაურთოთ მეტი ფუნქციები ობიექტების, ასე მაგალითად, მე ისაუბრა, თუ როგორ კლასების არსებითად დაჯგუფებების ფუნქციები. თქვენ შეგიძლიათ ვფიქრობ, რომ ეს იგრძნობა. მაგალითად, იქნებ მე ამ პოსტის ობიექტი, და იქნებ მე მინდა, რომ გარკვეული ფუნქცია ერთვის მას რომ ძირითადად მეუბნება იყო ცოტა ხნის წინ გამოქვეყნდა? იყო, რომელიც ბოლო ერთი კვირის განმავლობაში, ჭეშმარიტი ან მცდარი? და ეს ფუნქცია მე შეგიძლიათ დაურთოთ გადატანა, რომ ობიექტი, და ეს მართლაც მოსახერხებელი აქვს იგი იმავე ადგილას, და არსებობს მასპინძელი სხვადასხვა ფუნქციები, თქვენ შეგიძლიათ შექმნათ ამ ობიექტების, და ეს მართლაც ლამაზი შეძლებს დაურთოს კლასის, ობიექტი, ხოლო თუ თქვენ უბრალოდ ჰქონდა რიგები მოდის თქვენს მონაცემთა ბაზაში, მაშინ ნამდვილად ვერ ვანიჭებთ რაიმე ფუნქციონალური რომ. ეს სიტყვასიტყვით უბრალოდ მონაცემები. რაიმე შეკითხვები, რომ ყველა? ORMs ძალზე გავრცელებულია ვებ განვითარება, და არსებობს ბევრი სხვადასხვა სახის ORMs, და kohana აქვს საკუთარი ORM. ეს ძალიან ელემენტარული, მაგრამ თქვენ მიიღებთ გემოს რას ჰგავს. მოდით შევქმნათ მოდელი ჩვენი დღიურში შეტყობინება, და პირველი, რაც ჩვენ, რა თქმა უნდა შექმნათ ფაქტობრივი მაგიდა ჩვენს მონაცემთა ბაზაში რეალურად შესანახად ჩვენი მონაცემებით მათთვის შეტყობინება. პირველი, რაც მე ვაპირებ წასვლა phpMyAdmin. თქვენ ბიჭები გამოიყენება phpMyAdmin ადრე? Okay, რა, ასე რომ თქვენ ბიჭები უკვე იცით, რა არის, და მე ვაპირებ, რათა შეიქმნას ახალი მაგიდა სახელწოდებით kohana პოსტები, და ეს იქნება მართლაც მარტივია. მე უნდა შეხვიდეთ უკან შემოსული ყველა ჩვენ ვაპირებთ, რომ დღეს გვაქვს ავტორი და სხეულის, უბრალოდ შეინახოს იგი მარტივი. მე ვაპირებ შექმნას, რომ მაგიდა, და ახლა ჩვენ უბრალოდ უნდა მაგიდაზე წარმოადგენს ჩვენი შეტყობინება 2 სფეროებში ჩვენი ავტორი და ჩვენი სხეულის. სხვა საქმეა, მე ვაპირებ ახლა არის კონფიგურაციის ჩემს ვებ განაცხადის, ასე რომ იცის, თუ როგორ დაკავშირება მონაცემთა ბაზა, და ეს, კიდევ ერთხელ, არის ის, რომ თქვენ უნდა გავაკეთოთ ყველა ვებ პროგრამა. თქვენ უნდა გითხრათ, რომ მომხმარებლის სახელი და პაროლი და მონაცემთა ბაზის სახელი და ა.შ. და ა.შ. გაერკვნენ, თუ როგორ რეალურად დაკავშირება თქვენს მონაცემთა ბაზაში. In kohana, ჩვენ გვაქვს რაღაც მოუწოდა მონაცემთა ბაზის მოდული, და კონფიგურაციის საქაღალდეში ჩვენ ამ საქაღალდეში მოუწოდა მონაცემთა ბაზა, და როგორც ხედავთ, არსებობს bunch of პარამეტრების თქვენ უნდა მითითებული აქ ვუთხრა მას, რა მომხმარებლის სახელი და პაროლი მონაცემთა ბაზაში ასე, რომ შეიძლება რეალურად დააკავშირებს მას. და რადგან მე არ მინდა თქვენ ბიჭები ნამდვილად ვიცი, მომხმარებლის სახელი და პაროლი ჩემს მონაცემთა ბაზაში, მე მაქვს ფაილი, სადაც მე უკვე მითითებული, რომ ეს ყველაფერი, და მე ვაპირებ დააკოპირეთ და ჩასვით იგი დასრულდა. გასაოცარია. Okay. მე ვფიქრობ, რომ ყველა კონფიგურაციის უნდა გავაკეთოთ, მაგრამ ვნახოთ. ჩვენ გავაგრძელებთ მუშაობას, და თუ რამე crashes, მაშინ ჩვენ გაასწორონ ის. ახლა, რაც მე ვაპირებ ამის გაკეთებას, მე ვაპირებ, რომ შევქმნათ ახალი კონტროლერი. ან რეალურად, უკაცრავად. პირველი მე უნდა შექმნათ ახალი მოდელი. მე შექმნა ახალი მოდელი მოუწოდა Post.php, და რა ჩვენ ვაპირებთ გავაკეთოთ არის ჩვენ ვაპირებთ ეძახით კლასის Model_Post. ოჯახის ზოგიერთი სინტაქსის შეფერადება on, და ამრიგად, როდესაც მე ვამბობ, "ვრცელდება ORM", რომელიც ძირითადად კიდევ რამდენიმე ობიექტზე ორიენტირებული პროგრამირება, რომელიც, სამწუხაროდ, თქვენ ბიჭები არ შეიტყო CS50 არ არის, მაგრამ ეს საკმაოდ ადვილი შეარჩიო. ეს მაძლევს ყველა ამ დამატებით ფუნქციონალობას, რომელიც მოდის ამ ORM პაკეტი, და მე მიიღოთ bunch of ზედმეტი ფუნქციები და whatnot უფასოდ, რომელშიც თქვენ ნახავთ ცოტა მეორე. ახლა პრაქტიკულად ყველა მე უნდა შეიქმნას ამ კლასში. მე კი არ უნდა მიიღოს ნებისმიერი ფუნქცია ან არაფერი, მაგრამ მე შეიქმნა კლასი რომელიც წარმოადგენს მაგიდა, და რადგან მე გაგრძელდეს ამ ORM კლასი, მივიღებ bunch რამ უფასოდ, ასე რომ ახლა თქვენ არ უნდა დააყენოთ არაფერი მეტი up. და ახლა, რაც მე ვაპირებ ამის გაკეთებას, მე ვაპირებ, რომ შევქმნათ ახალი კონტროლერი, რომელიც მე ვაპირებ ასახელებს blog.php, და მე ვაპირებ კოპირება მეტი Welcome კონტროლერი ასე რომ, მე არ მაქვს გაიმეორეთ რაღაცები, და ახლა მე უნდა გადაარქვათ ამ. ახლა, რაც მე ვაპირებ, რათა გამოსცადოს დარწმუნდეთ ყველაფერი მუშაობს out, მე ვაპირებ დაიბრუნოს პირველი პოსტი ჩემს მონაცემთა ბაზაში და ბეჭდვა ორგანოს ჩანაწერის ეკრანზე. უნდა გავაკეთოთ, რომ ის, რაც მე ვაპირებ პირველი მე ვაპირებ გადარჩენა შეტყობინება ცვლადი ასე რომ, რასაც ჩვენ ვაპირებთ გავაკეთოთ არის - in kohana რასაც თქვენ აკეთებთ არის აითვისებდა ჩანაწერის ობიექტი ეს სახის რთული, მაგრამ თქვენ უნდა გავაკეთოთ ამ რამ მოუწოდა ORM :: ქარხანა, და მაშინ კორიდორი სახელით მოდელი გინდათ, და ის დააბრუნებს ORM ობიექტი, რომელიც წარმოადგენს, რომ მოდელი. და შემდეგ, როგორც ვთქვი, როცა ვრცელდება ORM ობიექტი, ჩვენ ყველა ამ მეთოდების უფასოდ, ასე მაგალითად, მივიღებთ ამ ახალი ფუნქცია მოუწოდა "ყველა" რომელიც ავტომატურად ბრუნდება ყოველი ჩანაწერი მონაცემთა ბაზაში, რომელიც საკმაოდ მოსახერხებელია. ახლა სხეულში მე ვაპირებ დაბრუნებას პირველი პოსტი და დაბრუნდეს მისი სხეულის. და რა თქმა უნდა, მე უნდა შექმნათ ჩანაწერი, მოდით ჩადეთ ახალი ჩანაწერი. მე ვიტყვი ", Brandon, ჩემი პირველი პოსტი". გასაოცარია. და ახლა ჩვენ ვაპირებთ წასვლა დღიურები და თუ ყველა კარგად მუშაობს - oh, ეს არის რაღაც სხვა dumb ფაილი ნებართვის რამ ერთხელ. გაიმართება 1 წამი. ეს ერთგვარი აბსურდია. იქ ჩვენ წავიდეთ. Okay. მე დაფიქსირდა, რომ ნებართვა პრობლემა. ის ცდილობს შექმნას გარკვეული ფაილების და ჟურნალი, და უფლებები, კიდევ ერთხელ, არ იყო სწორად მითითებული, ასე რომ მე მივიღე ეს ასე რომ, ეს ფაილი იყო ჩაწერადი და შესრულებადი ასე რომ, ეს შეიძლება რეალურად შეხვიდეთ რამ. ახლა ეს მაძლევს კიდევ ერთი გამონაკლისი განაცხადა, "კლასი ORM არ არის ნაპოვნი" და ეს იმიტომ, რომ მე დამავიწყდა კიდევ ერთი ნაბიჯი. ეს ძალიან ცუდია. In ჩატვირთვის საქაღალდეში ფაილი, არსებობს ეს მოდულები აქ, რომელიც შეგიძლიათ ჩართვა ან გამორთვა. ეს არის bunch სხვადასხვა თვისებები, რომ თქვენ შეგიძლიათ გამოიყენოთ ფარგლებში kohana, რომელიც არის ერთგვარი ლამაზი. მაგალითად, მათ აქვთ ავტორიზაციის მოდული რომელიც შეგიძლიათ გამოიყენოთ ავთენთიფიკაციის მომხმარებლებს. მათ აქვთ ქეშირების მოდული თუ გსურთ განხორციელება გარკვეული ქეშირების უკან ბოლომდე, რათა განაცხადის სამუშაოს სწრაფად და whatnot. ჩვენ გვჭირდება, რათა მონაცემთა ბაზა და ORM მოდული, რადგან როგორც ვთქვი, ჩვენ გამოყენებით მონაცემთა ბაზაში, ცხადია, და ჩვენ ასევე უნდა დაუშვათ ORM მოდული, იმიტომ, რომ ჩვენ გვინდა, რომ აქვს დამატებით ფუნქციონალობას, რომელიც არის ლამაზი აქვს. ყველა მე უნდა გააკეთოთ uncomment იმ 2 ხაზები, და ახლა თუ მე ამოცნობა, ეს მომცა კიდევ ერთი შეცდომა. იგი ამბობს: "Class Model_Post ვერ მოიძებნა." ახლა ეს არის კარგი პრობლემა აქვს. ვნახოთ. რათა ის საზოგადოებას. პოსტები გაიმართება. ოჰ, ძვირფასო. მე არ ვიცი, რატომ ვერ პოულობენ, რომ. რომ მართლაც უცნაურია. მაქვს ამ კლასში უფლება აქ. ვფიქრობ, მე ალბათ - oh. მე ასე მუნჯი. დამავიწყდა დაამატოთ PHP აქვს. ამიტომაც. ახლა მე უნდა გაუქმება, რომ 1 ცვლილება მე უბრალოდ გააკეთეს. Okay. იქ ჩვენ წავიდეთ. რომ მართლაც სულელური. მე არ გახსნის PHP აქვს. მაგრამ, როგორც ხედავთ, ახლა ის მუშაობს გამართულად, არა? ჩვენ გვყავს 1 პოსტი. ჩვენ მოგვეწონა პირველი პოსტი, და ახლა ჩვენ იბეჭდება მისი სხეულის. დიდი. Fantastic. ნებისმიერი კითხვები აქამდე? Nope? რაიმე შეკითხვა? Okay, ასე რომ, ჩვენ უბრალოდ შექმნილი ჩანაწერებში მოდელი, ძალიან ელემენტარული, და ჩვენ ვაპირებთ, რომ დაამატოთ ზოგიერთი ფუნქციების მოგვიანებით. ჩვენ შეგვიძლია დავამატოთ validations და ფილტრაცია. Validations არის ერთი რამ, რომ ფარგლებში გადაწყვიტოს თქვენ ნამდვილად, ნამდვილად კარგად, და მე არ ვფიქრობ, რომ თქვენ ბიჭები უნდა გაეკეთებინათ ეს თქვენი CS50 pset, მაგრამ თუ ვებ განვითარების თქვენს საბოლოო პროექტი, თქვენ სავარაუდოდ აპირებს გსურთ გარკვეული დადასტურება, ისევე, როგორც არ მქონე ცარიელი მომხმარებლის სახელები, იქნებ მქონე დაგავიწყდათ მინიმუმ გარკვეული სიგრძის, რამ, როგორიცაა, რომ. და ეს მართლაც რთული განახორციელოს ეს ყველაფერი თვითონ, და საკმაოდ ბევრი ყველა ერთი web ფარგლებში აკეთებს იგი თქვენთვის და საშუალებას გაძლევთ ამის გაკეთება ძალიან სუფთა გზა. და მოდელი, სადაც თქვენ ზოგადად გამოხატავენ იმ დადასტურება წესების, იმიტომ, რომ ის წევრები თუ არა მოდელი მოქმედებს თუ არა. მაგრამ ახლა, ჩვენ ვაპირებთ დააყენა, რომ სანამ მოგვიანებით, და ახლა ჩვენ ვაპირებთ მუშაობას მეორე ნაწილი, და ჩვენ ვაპირებთ შევეცადოთ და მიიღოს ახალი კალენდარი რომ ჩამოთვლილია ყველა პოსტი. ნაბიჯები ჩართული მიღების ახალი აქცია ჩამონათვალია ყველა პოსტი არის დაიბრუნოს სიაში ყველა პოსტი და მაშინ გამოიტანოს სიაში ყველა პოსტი მეშვეობით ხედი. სწორედ აქ, საბედნიეროდ, ჩვენ უკვე მოგვეწონა ყველა პოსტი გამოყენებით ამ პირველი ხაზი, იპოვოს ყველა ფუნქცია, და ახლა, რასაც ჩვენ ვაპირებთ გავაკეთოთ არის ჯერჯერობით მე პირდაპირ შექმნის ორგანოს პასუხი გავლით სიმებიანი, მაგრამ ახლა მინდა აზრით, და განსხვავება მიზნით და მხოლოდ ამით არის ხედი შემიძლია აქვს ლამაზი, დიდი HTML template, და რა შეგვიძლია გავაკეთოთ არის გაიაროს ეს ცვლადების და შემდეგ ხედი ავტომატურად populate მისი შაბლონი გამოყენებით იმ ცვლადების. რას გავაკეთებ არის მე შექმნა ახალი ხედვა, და მე ასახელებს კალენდარი რაღაც "წაკითხვა / ინდექსი" და მე ვაპირებ ძირითადად სავალდებულოა ამ - Oh, რა ვარ მე წერა? ჩემი ტვინი სხვაგან. მე ვაპირებ სავალდებულოა შეტყობინება ცვლადი აზრით, ისე, რომ გზა ხედი აქვს დაშვება ამ პოსტის ცვლადი. ასე რომ, ახლა მე უნდა შექმნას ამ თვალსაზრისით, ასე რომ, აქ ჩვენ გვაქვს ამ საქაღალდეში მოუწოდა "ნახვა" და პირველი, მე ვაპირებ, რომ შევქმნათ ახალი ფოლდერი ქვეშ, რომ ე.წ. "დღიური". ეს არის ლამაზი. ამ გზით ჩვენ შეგვიძლია ლამაზი იერარქიაში ჩვენი ნახვა. და შემდეგ მე ვაპირებ, რომ შევქმნათ ერთი ფაილი არ არსებობს ე.წ. "index.php". გასაოცარია. რეალურად, მოდით ორივე აქ. მიღების view ფაილი არის ალბათ უმარტივესი ნაწილია ეს ყველაფერი, და ეს, ალბათ, რაც თქვენ უკვე იცნობს. ჩვენ ვაპირებთ, რომ რამე მართლაც მარტივია, იწყება სიტყვებით "ჩემი სია დღიურში შეტყობინება". მაშინ ჩვენ შეგვიძლია გავლა, და ჩვენ შეგვიძლია iterate მეშვეობით შეტყობინება მასივი, აითვისებდა ყოველი ჩანაწერი და ვთქვათ რაღაც - იქნებ დაამატოთ ხაზი და შემდეგ ამობეჭდოთ ავტორი და ორგანო. რომ აზრი აქამდე? და ვნახოთ, თუ მუშაობს. არაფერი მომხდარა. მაინტერესებს, რატომ. ოჰ, მე გაშვებული 1 ნაბიჯი. ძალიან სულელური ჩემთვის. მე შექმნილი, მაგრამ მე არ შეიქმნა ხედი როგორც საპასუხოდ, ასე რომ თქვენ უნდა გავაკეთოთ 1 რამ. თქვენ უნდა გავაკეთოთ "ეს პასუხი ორგანო" და დაადგინა, რომ ეს ხედი. იქ ჩვენ წავიდეთ. ჩვენ გვაქვს ჩვენი სათაურს, და მაშინ ჩვენ გვაქვს ჩანაწერი, და მხოლოდ kicks, მოდით ჩადეთ მეორე ჩანაწერი ასე ვხედავთ სიაში. და ჩადეთ ამ 2 შეტყობინება, და ახლა თუ მე ამოცნობა გვერდზე, ჩვენ ვხედავთ, რომ ყველა ეს პოსტი აქ. არა, რომ აზრი აქამდე? ჰო, კითხვა? ოჰ, okay. როგორც ხედავთ, ჩვენ შევძელით გამოყოფა ყველა ამ კოდები out სხვადასხვა სექციები, და მაშინ დაინახავ, ეს ყველაზე ნათელი ხედვა კოდი. ამ ფაილის აქ, რომელიც წარმოადგენს აზრით, ეს მხოლოდ ზრუნავს წარმოადგენს მონაცემებით, ჩვენებისას მონაცემები. იგი იღებს გავიდა გარკვეული მონაცემები, და ყველა ის არ არის უბრალოდ ჩვენება, რომ თქვენ. ყველა სხვა ნაწილები თქვენი კოდი, რომ თქვენ არ უნდა ფიქრი, ნებისმიერი, რომ, და ანალოგიურად, თქვენი აზრით კოდი არ ინერვიულოთ შესახებ არაფერი როგორ ბაზაში შეღწევისათვის და ა.შ. და ა.შ., რომელიც არის ძალიან კარგი და რაც თქვენი კოდი ბევრად უფრო maintainable. როგორც ვთქვი, შეხედულებები, ისინი დინამიური, რომ ეს არის 1 ფაილი, მაგრამ ეს არ წარმოქმნის განსხვავებული შეხედულებები საფუძველზე ცვლადი რეალურად გაივლის, და გარდა ამისა, არსებობს ბევრი სხვადასხვა დამხმარე ფუნქციები რომ თქვენ შეგიძლიათ გამოიყენოთ, რათა დაგეხმაროთ დაწეროთ თქვენი კოდი უფრო სწრაფად, რომელიც მე შენ გაჩვენებ მხოლოდ მეორე. ჰო. [სტუდენტური] ასე $ 0 არის კონტროლერი, არა? რომ მეორე რამ. კითხვა არის არის $ 0 კონტროლერი? $ 0 არის ცვლადი, მე შექმნილი უფლება აქ. მე შექმნილი ხედი პირველი. მე დაავალა მას რამდენიმე ცვლადი. მერე გავიდა მას ამ ფუნქციის განხორციელება, როგორც ორგანოს რეაგირება. ამჯამად რომ აზრი? [სტუდენტური] ასე კალენდარი :: ქარხანაში, არის კალენდარი, როგორც კლასი ან ბიბლიოთეკაში [inaudible] ქარხნის ფუნქცია? კითხვა დაახლოებით კალენდარი :: ქარხნის ფუნქცია, და ძირითადად ეს არის კიდევ რამდენიმე ობიექტზე ორიენტირებული პროგრამირების არსებითად. View არის ხედი კლასის, და მას აქვს მეთოდი ეწოდება "ქარხანა" და ეს გზა უნდა დაიბრუნოს ობიექტი, რომელიც სახელწოდებით "წაკითხვა / ინდექსი". და ეს კიდევ რამდენიმე ობიექტზე ორიენტირებული პროგრამირების პერსონალი რომ მე არ ვაპირებ წასვლას აქ ძალიან ბევრი. ახლა რა თქმა უნდა, ჩვენ გვინდა, რომ შევქმნათ ახალი პოსტი, მაგრამ ჩვენ არ გვინდა, უნდა გავაკეთოთ ის მეშვეობით მონაცემთა ბაზა, ამიტომ ჩვენ ვაპირებთ, რომ შევქმნათ ახალი აქცია შექმნა ახალი ჩანაწერი, და არსებობს უამრავი პერსონალის ჩვენ უნდა გავაკეთოთ. პირველი, რაც ჩვენ ვაპირებთ - მოდით მოვაგვაროთ ეს ყველაფერი ერთი. პირველი, რაც ჩვენ ყველაფერს გავაკეთებთ, ჩვენ მივიღეთ შექმნათ ფორმა ჩასაგდები ახალი ჩანაწერი, მაგრამ მე ასევე აპირებს დაამატოთ ახალი სამოქმედო პირველი, ამიტომ დასძინა ახალი სამოქმედო ისეთივე ადვილია, როგორც დაემატა ახალი ფუნქცია თქვენი კონტროლერი, და ახლა მე ვაპირებ, რომ რამე ძალიან ელემენტარული, უბრალოდ აითვისებდა ამ თვალსაზრისით და გამოაქვეყნოთ იგი, უბრალოდ, არიან იგი თქვენთვის. და მაშინ ახლა მე ვაპირებ, რათა შეიქმნას ახალი კალენდარი ფაილი, და მე ვაპირებ დაიწყება წერილობით რაღაცები. რა არის ლამაზი შესახებ kohana არის, რომ მათ ბევრი სხვადასხვა დამხმარე ფუნქციები თქვენ წერენ დეტალური კოდი უფრო ადვილად, და 1 ის დამხმარე ფუნქცია ან დამხმარე მოდულები დაახლოებით წერილობით ფორმით. წერილობით ფორმით, მე ნამდვილად არ უნდა პირდაპირ დაწეროთ ნებისმიერი HTML თავს. თქვენ ბიჭები არ წერია HTML ფორმები. თქვენ იცით, ეს შეიძლება იყოს მართლაც, მართლაც მტკივნეული და cumbersome დაწერა ფორმები. ეს არ არის fun, ასე რომ საბედნიეროდ, ჩვენ შეგვიძლია ძირითადად წერენ ფორმის გამოყენებით kohana მიერ შექმნან დამხმარე ფუნქციები უნდა გავაკეთოთ ჩვენთვის. ჩვენ ვაპირებთ ძირითადად სფეროებში თითოეული რამ გვაქვს, ასე რომ, ერთი ავტორები და ერთი ორგანოები. ჩვენ ვაპირებთ აქვს ეტიკეტების, და ჩვენ ვაპირებთ აქვს შეყვანის. და მაშინ საბოლოოდ, ჩვენ ვაპირებთ აქვს წარდგენა. და როგორც ხედავთ, ეს არის ბევრად უფრო სუფთა დაწერა გარდა, რომ ყველა ბინძურ HTML, რომელიც სახის ლამაზი. ცხადია, არსებობს სხვა ვებ ფარგლებში, რომლებსაც აქვთ ეს კი სუფთა, ვიდრე, რომ, მაგრამ მაინც ეს უკეთესია, ვიდრე წერილობით HTML თავს. გასაოცარია, ასე რომ, ეს რას ვხედავ. რომ სახის ბინძურ, ამიტომ მე ვაპირებ რომ დაამატოთ ხაზის შესვენების არსებობს რათა, რომ გამოიყურებოდეს ცოტა გავალამაზოთ. ისე, რა თქმა უნდა, ეს მაინც გამოიყურება ნამდვილად, ნამდვილად ცუდი, მაგრამ ჩვენ უბრალოდ ორიენტირებული ფუნქციონალური ახლა და არა ესთეტიკას. დრო ყველაფერს გააკეთებს. და როგორც ხედავთ, ახლა ჩვენ სუპერ ძირითადი ფორმა, რომელიც სახის ლამაზი. ეს კოდი მინდა ვთქვა, ის არის სუფთა, ვიდრე ცდილობს დაწეროს HTML ქმნიან საკუთარ თავს, ასე რომ ლამაზი. რა არის შემდეგი? ახლა ჩვენ უნდა გავაკეთოთ ყველაფერი ერთად action. როგორც წესი, როდესაც წერთ HTML ფორმები, თქვენ უნდა ვუთხრა, სადაც ის აპირებს წარმოადგინოს ფორმა. By default ყველაზე ვებგვერდი ფარგლებში, იგი წარუდგენს ზუსტად იგივე URL, ასე რამ არის, თუ თქვენ მისაღებად თხოვნით / წაკითხვა / ახალი, ეს უნდა ცარიელია გაძლევთ ფორმა, მაგრამ თუ თქვენ პოსტ მოთხოვნით / წაკითხვა / ახალი მონაცემები, ეს უნდა რეალურად ცდილობენ გადარჩენა, რომ ჩანაწერი და რაღაც ეს. რა ჩვენ ვაპირებთ გავაკეთოთ არის ძირითადად ყველა ჩვენ უნდა გავაკეთოთ, რათა შეამოწმოს თუ არა ეს ჩანაწერი მოთხოვნა ან მიღება თხოვნა არის, რათა შეამოწმოთ რა არის ჩანაწერი ცვლადები შეგიძლიათ. და თუ ჩანაწერი ცვლადი არის მითითებული, მაშინ ჩვენ ვაპირებთ შევეცადოთ და შექმნას ახალი პოსტი. კიდევ ერთხელ, ჩვენ უბრალოდ ამის გაკეთება, და რომ ქმნის ახალ ჩანაწერი, და ჩვენ სიტყვასიტყვით აპირებს მითითებული მისი სფეროებში, როგორიცაა ამ, და მაშინ ჩვენ ვაპირებთ შეინახოთ. და შემდეგ მე ვაპირებ გადამისამართება ინდექსი გვერდი ასე ხედავენ ჩვენს სიაში ფორუმზე ერთხელ. მოდით ვეცადოთ, რომ. მე ვიტყვი ", Brandon" და შემდეგ წარმოადგინონ ჩანაწერი, და თუ ყველაფერი კარგად იქნება, როგორც ხედავთ, ეს გადამისამართება ჩემთვის ინდექსი გვერდზე, და თუ მე გადახვევა ბოლოში, ჩვენ ახლად შეიყვანეს პოსტი. Yay! ჰო, კითხვა. [სტუდენტი] რა მოხდება, თუ თქვენ შევიდნენ ზუსტად იგივე რამ თქვენ შევიდა ადრე? იგი შეამოწმებს დარწმუნდით თქვენ არ დუბლირებული იგივე წარდგენა? იყოს იყოს, არა, იმიტომ, რომ იყოს - უკაცრავად, კითხვა არის თუ შევა ზუსტად იგივე მონაცემების სახით და წარმოადგინოს, რომ იქნება ეს საშუალებას გაძლევთ ჩადეთ დუბლიკატი ობიექტი, დუბლიკატი ჩანაწერი, არსებითად? ახლა კი, ეს საშუალებას მოგცემთ ამის გაკეთება, რადგან მონაცემთა ბაზის ეს შესანიშნავად მოქმედებს აქვს მთლიანად დუბლირებული რიგები, მაგრამ თუ ეს არის შეშფოთება, მაშინ თქვენ შეგიძლიათ დაამატოთ validations, მაგალითად, დარწმუნდით, რომ თუ ეს არის ზუსტად ისევე როგორც რაღაც, რაც უკვე არსებობს, მერე ამბობენ, რომ ეს არასწორი ობიექტი, და მაშინ კი მიუთითოთ თქვენი შეცდომა და აცხადებენ, რომ "არასწორი, რადგან ეს უკვე არსებობს" ან რამე მაგდაგვარს. მაგრამ ამ შემთხვევაში, მე ვერ უბრალოდ შექმნათ რაიმე დუბლიკატი. ახლა მოდით შევეცადოთ და დაამატოთ რამდენიმე validations. პრობლემა ახლა ის არის, რომ მე ვერ ფაქტიურად წარუდგინოს სრულიად ცარიელი პოსტი. შემიძლია დააჭირეთ ღილაკს ახლა, და იქ ჩვენ წავიდეთ. თქვენ ვერ ვხედავ, მაგრამ ეს ზედმეტი ხაზი აქ მიუთითებს იმაზე, რომ მე ფაქტიურად ახალი პოსტი. ეს მხოლოდ ცარიელი ავტორი და ცარიელი ორგანო, და ჩვენ არ გვინდა, რომ ხალხს ამის გაკეთება. ეს არის სადაც დადასტურება მოდის შემოსული შემიძლია წასვლა ჩემი მოდელი ობიექტი, და ახლა შეგიძლიათ დაამატოთ ახალი ფუნქცია, რომელიც განსაზღვრავს რა დადასტურება წესების მე უნდა დაამატოთ ეს მოდელი დარწმუნდით, რომ ეს არის სწორი ან დააკონკრეტა რას ნიშნავს ეს, რომ იყოს სწორი პოსტი? და მინდა ვთქვა, რომ ეს მხოლოდ სწორი ჩანაწერი თუ ორივე ავტორის და სხეულის არ არის ცარიელი, და ეს არის, თუ როგორ გავაკეთოთ ეს kohana. თქვენ შექმნით ახალ ფუნქცია მოუწოდა "წესები" და მაშინ ძირითადად დაბრუნებას ასოციაციურ მასივში რომელიც განსაზღვრავს გადამოწმების წესი ეს ობიექტი. ჩვენ ვაპირებთ დაბრუნებას მასივი, და შემდეგ, რასაც ჩვენ ვაპირებთ გავაკეთოთ არის ამბობენ, "ავტორი", ის მიდის მასივი, რომელიც მიდის სხვა array მოუწოდა "არ ცარიელი." და შემდეგ მე ვაპირებ ვთქვა "ორგანო." Okay, და სინტაქსი და სტრუქტურა ამ შეიძლება ცოტა cumbersome და ცოტა რთული. თუ თქვენ წაიკითხავთ დოკუმენტაცია, ეს საკმაოდ მარტივია გაერკვნენ, მაგრამ არსებითად ეს არის ის, რაც თქვენ უნდა გააკეთოთ დააკონკრეტა გარკვეული დადასტურება წესების, და არსებობს უამრავი განსხვავებული წესები რომ kohana მოგცემთ უფასოდ, ისევე როგორც თქვენ შეგიძლიათ დაამატოთ წესების ვთქვა ეს უნდა იყოს მინიმუმ ამ სიგრძეზე. იქნებ ეს უნდა იყოს numeric. იქნებ ეს უნდა იყოს alpha numeric. იქნებ ეს უნდა იყოს ყველაზე ამ სიგრძის, ასე და ასე შემდეგ. არსებობს ბევრი სხვადასხვა წესები, რომლებიც kohana უზრუნველყოფს თქვენთვის, და შეგიძლიათ მათი ნახვა, შევხედოთ დოკუმენტაცია, და ხედავთ ყველა სხვა რამ, რომ შეგიძლიათ გააკეთოთ. მაგრამ ეს არ არის ყველა მე უნდა გავაკეთოთ, და ახლა ვნახოთ, რა მოხდება თუ მე წარმოადგინოს ცარიელი პოსტი. რა მოხდება? ოჰ, არა, მე შეცდომა. მივიღებ დადასტურება გამონაკლისი. ისე, ეს კარგია. ეს მითხრა, რომ ჩემი მოდელი არის არასწორი, მაგრამ მე არ მინდა, რომ არაა გამონაკლისი ჩემს მომხმარებლის როდესაც ისინი ცდილობენ წარმოადგინოს რაღაც არასწორი, არა? მინდა, რათა მათ გარკვეული მეგობრულად შეცდომა როდესაც რაღაც მიდის არასწორი. რასაც ჩვენ ვაპირებთ გავაკეთოთ არის ჩვენ ვაპირებთ გადაიტანოთ ყველაფერი ცდილობენ დაჭერა loop. სინამდვილეში, ვფიქრობ, ეს არის ასევე რაღაც თქვენ ვერ ისწავლა გაუკეთებია CS50, რადგან C, პროგრამირების ენა C, არ აქვს გამონაკლისი, მაგრამ თითქმის ყველა სხვა ენაზე აქვს გამონაკლისი, ასე ნამდვილად, ნამდვილად მოკლედ, გამონაკლისი არის ის, რომ ნაჭერი კოდი სისტემაში იმისათვის, რომ გამონაკლისი, როდესაც რაღაც მიდის არასწორი, მაგრამ მაშინ იქნებ რაიმე სხვა ნაჭერი კოდი უმაღლესი შეგიძლიათ დაიჭიროთ, რომ გამონაკლისი და რაღაც იგი. მაგალითად, ამ შემთხვევაში, ნაჭერი კოდი, რომელიც ცდილობს გადარჩენის მოდელი, მას validates მოდელი, და თუ ის ამბობს: "Okay, ეს მოდელი არასწორია" ის აპირებს იმისათვის, რომ გამონაკლისი, და ეს არის ერთგვარი ექვივალენტური დო თქვენ შეიძლება დაბრუნდეს -1 ან რამე მაგდაგვარს. და შემდეგ მე, ამ ფუნქციას, ჩემი კოდი უფრო მაღალ დონეზე, შემიძლია ცდილობენ და დაიჭიროთ, რომ გამონაკლისი და ძირითადად ამბობენ, "Okay, მე დაჭერა გამონაკლისი, რა ვარ მე აპირებს?" ან მე ვერ აირჩიოს არ დაიჭიროთ, რომ გამონაკლისი და მოდით ვინმე უმაღლესი up დაჭერა გამონაკლისი, თუ არავინ იჭერს, მაშინ მთელი პროგრამის დამსხვრევაზე და ამბობს, "რაღაც გაფუჭდა, და მე ვერ უმკლავდება იგი." მაგრამ რას ვაკეთებთ არის თქვენ გადაიტანოთ ნაჭერი კოდი in ლელო ბლოკი, და მაშინ ასევე რაღაც მოუწოდა catch ბლოკი, რომელიც არის ერთგვარი კოდი, რომელიც შეეცდება და დაჭერა გამონაკლისი, რომელიც შეიძლება მოხდეს. და ასე თუ დაჭერა ამ კონკრეტული გამონაკლისი ან ძალადაკარგულად გამონაკლისი, მერე რა მე ვაპირებ გავაკეთოთ არის მე ვაპირებ მითითებული შეცდომები - მე ვფიქრობ, რომ ის როგორ გავაკეთო - და მე ვაპირებ მითითებული შეცდომები ზოგიერთი ობიექტი. და მერე რა მე ვაპირებ გააკეთოთ, არის თუ გაიტანა ეს გამონაკლისი, ის არ აპირებს გადამისამართება, და თუ ის არ გადამისამართება, ის აპირებს გამოვიდეს, თუ წაკითხვა და მოხვდა ამ დღიურში / ახალი, რომელიც მინდა, მე მინდა ამის გაკეთება. თუ არ არის შეცდომა, მაშინ მე მინდა დაბრუნდეს ფორმა და არიან ისეთებიც, შეცდომები. ახლა რა მინდა გააკეთოთ მინდა გაივლის იმ შეცდომების ხედი. Okay, მე ვფიქრობ, რომ მე მაქვს კალენდარი უფლება აქ, და ძირითადად მინდა ცარიელია იმ შეცდომების, თუ ისინი არსებობს. სანამ ვწერ HTML, რომ, მე ვაპირებ ნამდვილად სწრაფად ნახოთ თუ რა სტრუქტურა ამ შეცდომების ცვლადი ჰგავს, და ეს არის კარგი პრაქტიკა ზოგადად. ბევრი ჯერ თქვენ მიიღებთ რაღაც უკან ზოგიერთი მეთოდი, ზოგიერთი ფუნქცია ვებგვერდი ფარგლებში, და თქვენ არ ვიცი რა ცვლადი ჰგავს, ასე რომ თქვენ არ იცით, თუ როგორ მუშაობა მას. მე ვაპირებ გამოიყენოთ ბეჭდვითი r მეთოდი ძირითადად ამობეჭდოთ. და როგორც ხედავთ, ის მეუბნება, რომ ეს ასოცირებული მასივი, და თქვენ გაქვთ გასაღები, ავტორის რაოდენობა ამ სტრიქონს, ავტორი ცარიელი არ უნდა იყოს, და მეორე გასაღები, ორგანო, ქულა სხვა სიმებიანი, სხეულის არ უნდა იყოს ცარიელი. მე მსგავსად, okay, cool. მაშინ მე შემიძლია iterate მეშვეობით მასივი და ამობეჭდოთ თითოეული გაგზავნა. ეს ძირითადად, როგორც ასოციაციურ მასივში ერთად bunch of წერილები. რა მე ვაპირებ არის "თუ შეცდომები" და მე ვაპირებ, რომ შევქმნათ უწესრიგო სია, და მე ვაპირებ iterate მეშვეობით ყველა შეცდომები. და ეს, და ახლა მე ვაპირებ ცდილობენ წარდგენის ეს კიდევ ერთხელ, და ვნახოთ რა მივიღებთ. ჩვენ მივიღებთ ამ ლამაზი სია შეცდომები, და ეს ჯერ კიდევ საკმაოდ მახინჯი, მაგრამ ეს აშკარად შეიძლება ფორმატირებული გამოიყურებოდეს ლამაზი, მაგრამ ძირითადი იდეა არის მხოლოდ რამდენიმე ხაზი კოდი, ჩვენ შევძელით, რათა შეამოწმოს ჩვენი მოდელი, დარწმუნდით, რომ გარკვეულ სფეროებში არ იყო ცარიელი, და თუ რამე არ მოხდა ისე, შემდეგ დაბრუნდნენ გარკვეული შეცდომა შემეძლო მაშინ წარმოადგინონ თავში შესახებ. თქვენ ასევე შეგიძლიათ Customize თქვენი დადასტურება ასე რომ თქვენ შეგიძლიათ რეალურად შეცდომა რომ უფრო სპეციფიკური თქვენი განცხადება ან რამე მაგდაგვარს. ყველა რომ ზოგადად დააკონფიგურიროთ. სამწუხაროდ, ჩვენ გაშვებული out of time, ამიტომ მე ვაპირებ უნდა შეწყვიტა ცოცხალი კოდირების სხდომაზე აქ. არსებობს bunch სხვა თვისებები, რომ მინდა დემონსტრირება თქვენთვის ამ მაგალითს. მაგალითად, თქვენ შეგიძლიათ დაამატოთ თარგები თქვენს საიტზე, იქნებ არსებობს გარკვეული HTML კოდი, რომელიც გსურთ ვრცელდება თითოეული გვერდი თქვენს საიტზე, და ნაცვლად pasting რომ თითოეული view ფაილი გაქვთ, რომელიც აშკარად იქნებოდა ცუდი პრაქტიკა, შეგიძლიათ პრაქტიკულად განსაზღვრავს ამ თარგები, და შემდეგ თქვენი კონტროლერი ამბობენ, "Okay, მე გამოყენებით ამ თარგის." "ყველა ჩემი views გამოიყენოთ ეს თარგი." და ერთი ბოლო რამ მინდა იმის დემონსტრირება, რომ თქვენ ასევე რომ ჩვენ არ გვაქვს დრო არის cross-site სკრიპტირების, და ძირითადად მე ვფიქრობ, თქვენ ბიჭები ალბათ ჩანს CS50 - მე ვფიქრობ, რომ დავით Malan ალბათ ისაუბრა, თუ როგორ შეგიძლიათ ჩვეულებრივ მიეცეს JavaScript კოდი შევიდა - თქვენ ამის შესახებ? იქნებ? იქნებ არა? მაგრამ ბევრი ჯერ თქვენ შეიძლება მიეცეს მუქარის JavaScript კოდი შევიდა ვინმე მონაცემთა ბაზაში, და თუ ისინი არ გაქცევა, რომ სწორად, მაშინ, როდესაც ისინი წარმოადგინოს, რომ მონაცემები უკან შესახებ, მაშინ იგი შეიძლება აწარმოებს გარკვეული შემთხვევითი JavaScript კოდი არ გსურთ რომ მოხდეს, და მივდიოდი იმის დემონსტრირება, თუ როგორ მინდა, რომ შიგნით kohana. ეს, ფაქტობრივად, ნამდვილად, ნამდვილად არ არის ადვილი. მე ამას ახლა 2 წამში სიტყვასიტყვით. ყველა თქვენ უნდა გააკეთოთ ძირითადად გადაიტანოთ ეს ყველაფერი ამ რამ მოუწოდა HTML პირები. და რომ ავტომატურად გაქცევა ყველა პერსონაჟი სწორად და დარწმუნდით, რომ თქვენ არ მიიღოს ეს პრობლემა. [სტუდენტური] თქვენ ჩაწერეთ პირველი გამოცდა არასწორად. [Brandon Liu] Oh, oops. Okay, რომ ყველა მე უნდა გაგიზიაროთ დღეს. ეს სლაიდები იქნება გამოქვეყნებული, მაგრამ ეს ზოგადად ერთადერთი რესურსი, თქვენ უნდა ნამდვილად უნდა დავიწყოთ kohana. შეგიძლიათ ნახვა. მათ აქვთ მომხმარებლის სახელმძღვანელო, და ისინი ასევე აქვს API Explorer. ჩვენ შეგვიძლია შეისწავლონ ყველა განსხვავებული ფუნქციები და დამხმარე ფუნქციები აქვთ თქვენთვის. ისინი საერთოდ არ არის საკმარისი ინფორმაციის ნახვა რომ თქვენ შეგიძლიათ გამოიყენოთ მისაღებად დაიწყო და მიიღეთ აპირებს kohana. არ არის, რომ ბევრი გაკვეთილები, მე ვფიქრობ, kohana, გარეთ რა აქვთ ვებგვერდზე აქ, ასე რომ ეს არის ალბათ თქვენი საუკეთესო ფსონი. მაგრამ თუ გსურთ წავიდეთ ერთად web ფარგლებში და თქვენ არ მინდა უნდა შეარჩიო ახალი ენა, და გსურთ რაღაც რომ არის შედარებით მსუბუქი და აქვს ადვილი სასწავლო მრუდი, მე აუცილებლად ვარაუდობენ kohana. ეს, ალბათ, საუკეთესო შეთავაზებას, რომ. სასაცილო რამ, თუმცა, თუ ჩვენ გამოყენებით Ruby ლიანდაგზე, ჩვენ შეგვეძლო გაიმეორა, რასაც ჩვენ უბრალოდ გააკეთა და ალბათ უფრო ქვეშ 3 წუთი. არ არის ხუმრობა, მაგრამ სწავლის Ruby ლიანდაგზე იღებს ბევრი აღარ მეტი დასჭირდება, რათა ვისწავლოთ kohana. ეს ძირითადად თქვენი არჩევანი, თუ რა გსურთ აირჩიოთ უნდა ვისწავლოთ, მაგრამ თუ გსურთ მიიღოთ შექმნილია და გამართულად მუშაობს სწრაფად, Kohana ნამდვილად ძალიან კარგი არჩევანია. ნებისმიერი ბოლო კითხვა სანამ ჩვენ დასრულდება? დიახ. [სტუდენტური] როგორ იქნებოდა ჩვენ ინტეგრირება რომ ამ CSS ფარგლებში, როგორც თქვენ გამოყენებით როდესაც ავალებს? საკითხავია, რამდენად იქნებოდა ჩვენ ინტეგრირება რომ CSS ფარგლებში? ის, რაც ჩვენ, ალბათ, ჩვენ, ალბათ არის ახალი ფოლდერი სადაც ჩვენ ნაგავსაყრელი ყველა ჩვენი CSS ფაილი, და მაშინ ჩვენ მინდა ასევე დაამატოთ ახალი თარგი. თარგი ჩვენ გვინდა მოიცავს იმ CSS ფაილი რათა დარწმუნდეთ, რომ ისინი მითითებული თითოეულ გვერდზე, და მაშინ, როდესაც თქვენ ნამდვილად წერს HTML, უბრალოდ დაამატოთ შესაბამისი კლასები და whatnot, და მაგალითად, როდესაც თქვენ იყენებთ რაღაც ფორმა დამხმარე ფუნქცია, შეგიძლიათ დაამატოთ პარამეტრების შემდეგ მიუთითოთ კლასების გსურთ ერთვის სხვადასხვა რამ ასე რომ მათ შეეძლოთ სტილი სწორად, და რომ ის, ძირითადად, თუ როგორ წავიდოდა. ნებისმიერი სხვა კითხვები? გასაოცარია. გმადლობთ, თქვენი დრო, და დიდი მადლობა მობრძანებისათვის. მე არ ვაპირებ, რომ დაამატოთ ძალიან ბევრი სხვას, მაგრამ 1 მართლაც სწრაფი რამ არის ჩვენ არ გვაქვს ბმული ფორმა. მართლაც dumb. მოდით დაამატოთ - რეალურად თვალსაზრისით, დღიურში, ინდექსი, მოდით მართლაც სწრაფად დაამატოთ ბმული რომ მიდის ახალ გვერდზე, გვერდზე სადაც შეგვიძლია ჩადეთ ახალი ჩანაწერი. ჩვენ ვაპირებთ, რომ გავაკეთოთ ეს. რა არის ლამაზი იქ არის მთელი ამ ჯგუფის HTML დამხმარე ფუნქციები რომლებიც სხვადასხვა რამ თქვენ, ასე რომ თქვენ უკვე ნახა პირები ფუნქცია აქ, მაგრამ ისინი ასევე აქვს ფუნქცია მოუწოდა "წამყვანი" რომელიც შეგიძლიათ აკრიფოთ წაკითხვა / new და ვთქვათ, "Post new blog". და ეს იქნებოდა შეიქმნას ბმული თქვენ, და ეს, როგორც ჩანს, მართლაც ტრივიალური, მაგრამ ეს არის ლამაზი, რადგან ვფიქრობ, რომ თქვენ მოძრავი თქვენი ნახვა 1 domain სხვა. და თუ უბრალოდ დაწერა out მისამართები თავს, მაშინ თქვენ უნდა შეცვალოთ ყველა მისამართები. ან იქნებ გადაიტანეს 1 subfolder სხვა subfolder. თქვენ უნდა შეცვალოს ყველა ის მისამართები თავს, და რომ არ fun. თქვენ შეგიძლიათ გამოიყენოთ ეს წამყვანმა სწორედ აქ, და თქვენ შეგიძლიათ შეცვალოთ domain ან subfolder პრეფიქსი კონფიგურაციის ფაილი ერთდროულად, და მაშინ გამოიყენება, რომ ყველგან, და ეს არის, კიდევ ერთხელ, დიდი მაგალითია არ გაიმეოროს თავს, საშრობი თქვენი კოდი out. იქ, სადაც თქვენ იმეორებს თავს, ცდილობენ და ამონაწერი გარკვეული კონფიგურაციის ფაილი ან სხვადასხვა ფუნქცია და იგი გაუმკლავდეს, რომ თქვენ. და ძალიან ბოლო რამ, რომ მინდოდა გაჩვენოთ იყო ვფიქრობ, ჩვენ უკან ამ პოსტის და მე შედგება რამდენიმე მართლაც ხანგრძლივი ესე, მაგრამ დამავიწყდა მოიცავს ჩემი ავტორს. ახლა, როდესაც მე დაწკაპეთ "გაგზავნა Post" მე უბრალოდ ყველაფერი დაკარგა. არა! ძალიან სამწუხაროა. ასე რომ, როგორ გაუმკლავდეთ, რომ? ეს არის ის რასაც ჩვენ ვაკეთებთ. რას ვაკეთებთ აქ არის ამ შეყვანის და ტექსტური ფართობი ფუნქციები, თუ ჩვენ მოიცავს მეორე პარამეტრი, მაშინ ღირებულება რომ მეორე პარამეტრი იქნება, თუ რა სფეროში უნდა თავდაპირველად დასახლებული. ის, რაც ჩვენ შეგვიძლია გავაკეთოთ, არის ჩვენი ბლოგი კონტროლერი, ჩვენ ვერ ვუკავშირდები ერთი ცვლადი. მას "ღირებულებების" იქნებ. და გაივლის პოსტ მასივი, სიტყვასიტყვით. ეს იმას ნიშნავს, რომ თუ დადასტურება ვერ მოხერხდა, გაივლის ჩემთვის პოსტი array რომ მე წარმოდგენილი გასული მოთხოვნით, და რომ ასე შეგვიძლია მნიშვნელობები გამოვიყენოთ, ჩემი ბოლო წარდგენა to repopulate სფეროებში. ახლა შემიძლია რაღაც ღირებულებები ავტორი და ფასეულობები ორგანოს, და რომ გზა ახლა, თუ გარკვეული შემთხვევითი პერსონალი და დააჭირეთ "გაგზავნა Post", მაშინ იგი რჩება იქ. მაგრამ ჩვენ ვაპირებთ გადაეყარონ კიდევ ერთი პრობლემა. რომელიც მუშაობს, მაგრამ თუ წასვლა გვერდზე პირველად, ის აპირებს ავარიული, და ეს იმიტომ, რომ ძალიან პირველად ჩვენ გადადით გვერდზე ამ ჩანაწერის ცვლადი განსაზღვრული არ გაუკეთებია. ეს null. ის არ არსებობს. და რა გვინდა, რომ ვთქვა, არის თუ არა ეს გასაღები არსებობს, შემდეგ დაბრუნდნენ ღირებულება ამ მასივი, მაგრამ თუ გასაღები არ არსებობს, მაშინ დაბრუნდებიან ცარიელი სტრიქონი. ეს არის ის, ფუნქციონალური ჩვენ გვინდა აქ. ჩვენ გვინდა შევამოწმოთ თუ გასაღები წინაშე ცდილობს მასივი, და საბედნიეროდ საკმარისი, Kohana ასევე გვაძლევს დამხმარე ფუნქცია რომ. მათ აქვთ მთელი ამ კომპლექტს ფუნქციები სახელწოდებით ARR, მოკლე მასივი, და მათ აქვთ 1 ფუნქცია მოუწოდა "მიიღოს" და თქვენ ვერ გაივლის მასივი, და თქვენ ვერ გაივლის სახელით გასაღები. მაშინ ძირითადად, თუ რას გავაკეთებ არის ის შეეცდება მიიღოს, რომ გასაღები, მაგრამ თუ ეს გასაღები არ არსებობს მასივი, შემდეგ იგი დაბრუნდება ცარიელი, ან ჩვენ შეგვიძლია ასევე დააკონკრეტა, რა, მე მჯერა, რომელიც არის ლამაზი. ახლა თუ ჩვენ გავაკეთოთ იგივე ერთხელ, შემდეგ ხედავთ ახლა ის მუშაობს პირველად გარშემო, და ისევ, თუ ჩვენ აკრიფოთ შემთხვევითი პერსონალი და ცდილობენ და წარადგინოს, მაშინ იგი რჩება იქ. და ვფიქრობ, ასევე შეგიძლიათ ნახოთ თუ როგორ უნდა დაამატოთ თარგი მართლაც სწრაფად. რა შეგვიძლია გავაკეთოთ პირველი არის ის, ჩვენ შეგვიძლია დავამატოთ ახალი ხედვა ე.წ. "template.php" ფარგლებში დათვალიერების საქაღალდეში, და რა მე ვაპირებ ამის გაკეთებას, მე ვაპირებ ამობეჭდოთ რაღაც მოუწოდა "შინაარსი" რომელიც იქნება ჩემი მთავარ შინაარსზე. და იქნებ ძალიან ბოლოში მე ვაპირებ დაამატოთ, ვთქვათ, საავტორო. [Inaudible სტუდენტი კითხვა] [Brandon Liu] იქნებ ეს არის სუპერ ძირითადი თარგი მინდა გამოიყენოს. მინდა საქაღალდე ჩემს საავტორო თითოეულ გვერდზე, და ახლა, რაც მე ვაპირებ ჩემს კონტროლერი ახლა ნაცვლად ამბობდა, "ვრცელდება Controller" მე ვაპირებ ვთქვა, "ვრცელდება Controller_Template" და ახლა ნაცვლად ამბობდა, "პასუხი სხეულის უდრის ამ თვალსაზრისით" მე ვაპირებ ვთქვა, "ეს თარგი შინაარსი -" და მე ვფიქრობ, - შემიძლია დააყენა თანაბარი ნიშანი? მე დაგვავიწყდეს. ჰო, მე ვფიქრობდი ასე. და ახლა მე მითითებული, რომ content ცვლადი ტოლი ხედი. შემიძლია იგივე აქ. და ახლა თუ მე ამოცნობა, თქვენ ხედავთ, ახლა ეს საავტორო ემატება იქ, და მხოლოდ გარკვეული შემთხვევითი ჩანაწერი, და შემდეგ, კიდევ ერთხელ, თქვენ უნდა დაინახოს, რომ საავტორო არის ძალიან ბოლოში გვერდზე. დიდი. ეს ყველაფერი მინდოდა გაჩვენოთ ბიჭები. [ტაში] რაიმე შეკითხვა? [CS50.TV]