[سمینار] [Kohana: A سبک فریم ورک PHP] [براندون لیو] [دانشگاه هاروارد] [این CS50 است.] [CS50.TV] سلام. نام من براندون است. من یک تازه وارد در اینجا در کالج انجام می دهند علوم کامپیوتر، و امروز ما قصد داریم به بحث در مورد Kohana است، که یک چارچوب توسعه وب PHP. امروز در حال رفتن به یک سمینار برنامه نویسی زندگی می کنند، بنابراین من اساسا رفتن به صرف 5-10 دقیقه توضیح آنچه Kohana است، و پس از آن من به معنای واقعی کلمه رفتن به ساخت یک وبلاگ فوق العاده ساده برای شما در اینجا به معنای واقعی کلمه، از ابتدا. ما قصد داریم برای دانلود کد آن را از وب سایت Kohana، و ما قصد داریم به شروع به ساخت یک وبلاگ، و امیدوارم آن خواهید بود بسیار آموزنده، چرا که شما شاید شاید خواهید دید من برخی از اشتباهات را، و شما خواهید دید که من از آنها بهبود می یابند، یا شما روند تفکر من را به عنوان من را از طریق این وبلاگ ساخت، و در عین حال، شما نیز با چارچوب خود آشنا کنید. امیدوارم آن خواهید بود یک ورزش بسیار آموزنده. اول، آنچه که دقیقا یک چارچوب است؟ اگر شما شده است مصرف CS50 تا کنون، شما واقعا با هیچ کار نکرده چارچوب نشده است، و چیزی که این است. شما احتمالا انجام داده ام 1 توسعه وب pset در حال حاضر، و اجازه دهید به شما می گویند ادامه به ساخت وب سایت و حفظ وب سایت های ساخت و ساز. شما شروع به توجه به چند چیز. اولین چیزی که شما متوجه است که شما احتمالا انجام کارهای مشابه بارها و بارها در همه زمان ها، چیزهایی مثل تمیز کردن داده های ورودی کاربر، چیزهایی مثل سازماندهی فایل های خود را در یک روش خاص. چیز دیگری شما نیز احتمالا متوجه این است که کد شما ممکن است شروع به تبدیل شدن به بسیار، بسیار کثیف، و شما ممکن است آن را کثیف را ترک کرده و فقط در زمان بسیار سخت است حفظ آن را داشته باشد، و یا ممکن است شما شروع به ساختار کد شما و ساخت آن مدولار در روش های خاصی به آن را نگهداری می کند. این است که در آن چارچوب های وب اساسا هنوز وارد آمد اینها کسانی هستند که بسیاری از وب سایت ساخته شده بود، گفتند: "ما نیازی به انجام مجدد این در هر زمان تنها ما برای ساخت یک وب سایت." "چرا ما فقط یک بسته است که تمام این چیزها را برای شما می سازد در هر زمان تنها شما می خواهید برای ایجاد یک وب سایت؟ " و به طوری که زمانی که شما یک وب سایت جدید، شما فقط در آنچه که دقیقا در این وب سایت خاص است که در مورد تمرکز می کنند. شما لازم نیست به تکرار تمام پیکربندی های مختلف و جدایی از کد و کد بازنویسی که شما اغلب باید بکنید هنگامی که شما در حال ساخت وب سایت. ایده این است که یک چارچوب اجازه می دهد تا شما را به ارسال یک کد سطح بالاتر بدون اینکه در مورد جزئیات سطح پایین تر نگران باشید. جزئیات سطح پایین تر ممکن است چیزی شبیه به خرید و فروش با تمیز کردن داده های ورودی کاربر. این چیزی است که شما واقعا نمی باید نیاز به نگرانی در مورد است. شما باید در مورد آنچه که تخصیص وب سایت شما است که در واقع در مورد تمرکز می کنند. این حذف بسیاری از کد boilerplate. این معماری برای پروژه شما است. یکی از محبوب ترین خواهد بود مدل نمایش، کنترل، که من قصد دارم به بحث در مورد در یک ثانیه. و بسیاری از اوقات این چارچوب شکل دادن به یک مجموعه ای از روش، قوانین، و بهترین شیوه را برای شما به استفاده از به طوری که زمانی که شما در چارچوب وب اتخاذ شما باید برای ارسال کد خود را در یک روش خاص، و آن را به طور کلی به مجموعه ای از اصول توافق کردند توسط جامعه است که به طور کلی پذیرفته می شود یک راه خوب نوشتن کد. این باعث می شود کد شما نگهداری بیشتر، بیشتر قابل استفاده، غیره و غیره. و در نهایت، چیزی که من می خواهم در مورد چارچوب تاکید در مقابل کتابخانه این ایده در مورد وارونگی کنترل است، و چیزی که این است. تفاوت بین یک کتابخانه و یک چارچوب است که با یک کتابخانه شما هنوز هم نوشتن برنامه اصلی، و شما نوع فراخوانی کتابخانه و خواستار بر کتابخانه برای انجام کاری برای شما. تفاوت بین یک کتابخانه و یک چارچوب است که چارچوب شروع می شود با کنترل، و آن را فراخوانی کد خود را، بنابراین شما می توانید از آن به عنوان فکر می کنم - این است که چرا آن را به یک چارچوب نامیده می شود - چارچوب فراهم می کند این قاب و ساختار برای کد شما، و شما را در سوراخ ها را پر کنید، و این در دوم تبدیل خواهد شد بیشتر آشکار من زمانی که می بینید شروع به نوشتن کد در چارچوب چارچوب. شما خواهید دید که من پر کردن شکاف، و چارچوب نوع از کنترل تمام قطعات در حال حرکت، و من مجبور به قرار دادن قطعات در مکان های مناسب. امروز ما قصد داریم تا در مورد Kohana صحبت می کنید، که یکی از چارچوب PHP است. می باشد چارچوب های وب وجود دارد، و آنهایی که وجود دارد تقریبا در هر زبان واحد، و من چیدن Kohana به دلیل Kohana است مسلما و به طور کلی به عنوان ساده ترین چارچوب PHP را انتخاب کنید تا به رسمیت شناخته شده. این بسیار سبک وزن است. دیگر آنهایی که در خارج وجود دارد که با بسیاری از، بسیاری از ویژگی های بیشتری وجود دارد، اما آنها تمایل به سخت تر انتخاب کنید تا. و در نهایت، Kohana با استفاده از معماری MVC. این به اندازه کافی سبک وزن است که ما به معنای واقعی کلمه می تواند به ساخت یک پروژه در اینجا درست در مقابل چشم شما، و شما می توانید تقریبا به دنبال همراه به راحتی. معماری MVC چیست؟ این برای مدل نمایش، کنترل می ایستد، و شاید اگر شما در مورد کد فکر می کنم شما نوشتن تا کنون برای برخی از psets توسعه وب شما شما ممکن است قادر به دیدن برخی از این، اما معمولا وقتی شروع به نوشتن برنامه وب پیچیده تر، بخش بین این 3 بخش بیشتر و بیشتر آشکار می شود. I گذاشته شده از MVC در اینجا به مانند یک پشته، و اغلب شما شنیدید که مردم در توسعه وب را در مورد پشته صحبت می کنید، و این است برای نشان دادن این ایده که هر لایه، هر یک از اجزاء واقعا تلاش می کند تا تنها ارتباط بین 2 سایر اجزاء. کسی دسترسی به وب سایت خود را به عنوان یک مشتری و یا مرورگر. آنها با برنامه های خود را از طریق کد نظر تداخل می کنند. کد نمایش تعامل با کنترل. کنترل تعامل با مدل، و مدل با پایگاه داده SQL تعامل است. و هیچ رقص در بین وجود دارد اگر شما به درستی ارسال نمایید. چه این کارها را انجام دهید؟ این مدل در اصل قطعه از کد را که با داده های خود سر و کار دارد. هر چیزی که با پایگاه داده خود را می پردازد، با اشیاء است که شما را ذخیره، و یا بازیابی آن اشیاء در پایگاه داده، این همه با استفاده از مدل گرفته شده است. شاید شما اشیاء در بانک اطلاعاتی شما. ما قصد داریم برای ایجاد یک مدل نیاز به کار با نوشته ها، بنابراین یک پست ممکن است برخی از ویژگی های آن را داشته باشد. شما نمیتوانید توابع اطراف ذخیره سازی آن ارسال و یا دریافت پست دارند و یا فیلتر کردن پست و غیره و غیره، و تمام کد که توسط مدل به کار گرفته شده است. کنترل کننده نوع منطق برنامه است، و بسیاری از مسائل مختلف می تواند در منطق برنامه بروید. اگر شما در حال صحبت کردن به API های مختلف، که ممکن است که در آن شما با خرید و فروش منطق برنامه است. اگر شما در حال تلاش برای باید این کار را در داده ها از مدل های مختلف چند و باید آنها را ترکیب در برخی از راه، که اغلب ممکن است با کنترل گرفته شده است. به عنوان مثال، در فیس بوک، اگر شما دوست، فردی هست، پس شاید که عمل ایجاد این رابطه ممکن است با کنترل انجام می شود. و در نهایت، از نظر کد که تولید چیزی است که شما در واقع می بینند. بسیاری از اوقات من در psets CS50 فکر می کنم آنها واقعا به شما بچه ها را تشویق به جدا کردن این 3 چیز است. شما احتمالا این بزرگ، فایل های طولانی که در آن در بالای صفحه شما برخی از پرس و جو SQL را و شاید انجام برخی پردازش در داده های شما از دیتابیس بازیابی، و پس از آن همه HTML خود را در پایین. و شما ممکن است دریابید که به شما ایجاد صفحات بیشتر و بیشتر است که شما قصد به برخی از تکرار کد، و همچنین، چیزی است فایل شما می شود واقعا بزرگ و بلند و گنده برای مدیریت می شود. به همین دلیل MVC است تا به خوبی در نظر گرفته برای تعدادی از دلایل. اولین چیزی است که چیزی به نام جدایی از نگرانی است که این ایده است که هنگامی که شما به - در حالت ایده آل 1 قطعه ای از کد باید 1 کار را انجام و آن را واقعا خوب، و شما باید قطعه کد که انجام کارهای مختلف ترکیب نیست. به عنوان مثال، مشاهده کد و کد مدل، آنها واقعا باید به هم مرتبط باشند. آنها لازم نیست که در فایل های مشابه می شود، تا زمانی که شما می توانید، آنها را از هم جدا پس از آن آسان است حفظ کند. چیز دیگری استفاده مجدد از کد است. شما ممکن است خودتان را در همان پرس و جو SQL نوشتن و یا انجام نمایش داده شد مشابه است که می تواند به 1 تابع انتزاعی، و این که این ایده در پشت مدل و کنترل، داشتن آن را در یک عملکرد مجزا که شما می توانید در مکان های مختلف در پروژه های خود استفاده مجدد. و در نهایت، که به خشک کردن کد خود را گره خورده است، و یا خود را تکرار نمی کند، خودتان را تکرار کنیم. این در توسعه بسیار قابل فهم است. هر زمان که شما می توانید، شما نمی خواهید به خودتان تکرار، چرا که اگر شما خودتان را تکرار،  آن را به مراتب پر هزینه تر برای حفظ. اگر شما می خواهید به تغییر 1 چیزی، شما باید برای تغییر آن در همه جا، و که منجر به اشکالات، و آن را وحشتناک. خوب. هر گونه سؤال که تا کنون در مورد Kohana در تمام؟ بزرگ. در حال حاضر ما در حال رفتن به شیرجه رفتن به جلسه برنامه نویسی زندگی می کنند، و امیدوارم همه چیز به خوبی می رود. من می خواهم برای اساسا ساخت این وب سایت بر روی یکی از سرور از راه دور من، و به این ترتیب شما بچه ها نیز می توانید وب سایت مراجعه کنید و دسترسی به وب سایت، و همچنین محیط زیست بهتر پیکربندی از دستگاه راه دور من است، چرا که آن را در حال اجرا لینوکس به جای OS X. ما به معنای واقعی کلمه شروع کنید به. KohanaFramework.org. من قصد دارم برای دانلود کد آن را از وب سایت. من قصد دارم برای کپی کردن آدرس لینک، رفتن به سرور، دانلود، و من قصد دارم به آن را استخراج میکند. [دانشجو] چه بزرگترین شما می توانید متن را در؟ [براندون لیو] است که بهتر است؟ [دانشجو] آیا این شدنی است؟ [براندون لیو] آره، خوب است. من دانلود یک فایل ZIP و در یک پوشه به نام Kohana همینگونه که، و ما در حال رفتن به تغییر نام که CS50-Kohana، و اجازه دهید به وارد بسیار معروف. در اینجا یک دسته از فایل های مختلف را مشاهده می کنید. بسیاری از شما می تواند نادیده بگیرد - we're قصد ندارم به از طریق هر فایل واحد است که در اینجا به دلیل محدودیت های زمان ما، اما به طور کلی زمانی که شما نصب Kohana، اولین چیزی که شما باید انجام دهید است شما را به دایرکتوری بروید، و شما اساسا خواهید انجام برخی از آزمون های محیط زیست و فلان چیز مطمئن شوید محیط زیست خود را به درستی برای اجرای Kohana و مطمئن شوید که همه چیز درست است. شما می توانید ببینید ترین چیز گذشت، اما به طور کلی شما همیشه به این مشکل 1 اجرا که در آن شکایت می کند که برخی directory قابل نوشتن نیست، و این که به دلیل برخی از مجوز است. من نمی دانم که چقدر به شما بچه ها در مورد مجوز های دسترسی فایل در CS50 آموخته، اما اگر شما توسعه وب، شما به اجرا را به این مسئله زیادی. من قصد دارم آن را قابل نوشتن کنید و من فکر می کنم من هم به - وجود می کنیم. خوب، پس در حال حاضر شما می توانید ببینید که همه چیز گذشت، و در حال حاضر آن را به شما بگویم به تغییر نام فایل install.php. من قصد دارم به حرکت در فایل install.php رو به installed.php، و در حال حاضر اگر من تازه کردن، آن را به من می دهد برخی از خطا، و این جایی است که اشکال زدایی می آید. این جایی است که شما می توانید آنچه در واقع اتفاق خواهد افتاد. چیزی است، به طور پیش فرض، Kohana فرض می شود که پروژه خود را در فهرست ریشه دامنه شما، پس از آن به انتظار شما در demo.brandonkliu.com باشد. ما باید به آن بگویید که آن را در واقع در یک زیرپوشه. آن را در یک زیر پوشه به نام CS50 Kohana است. چیزی است، آن را تفسیر غلط CS50-Kohana به عنوان چیز دیگری که من به شما در یک ثانیه را توضیح دهد. اما من باید به شما بگویم که چیزی است که انتظار می رود است. چه ما می خواهیم انجام دهیم این است که ما قصد داریم برای رفتن به این پوشه به نام bootstrap.php، که پوشه پیکربندی که در آن بسیاری از مسائل مختلف راه اندازی شده است. من باز است که تا. پس از آن شاید یکی از اولین چیزهایی که من انجام است تغییر منطقه زمان. و پس از آن اجازه دهید را ببینید. آها! حق در اینجا. یک دسته از احادیث پیکربندی های مختلف وجود دارد در اینجا، اما یکی از من دنبال این چیزی که به نام URL پایه است، و به طور پیش فرض من آن را به Kohana مجموعه، اما من قصد دارم برای تغییر آن به CS50-Kohana، و من فکر می کنم که باید آن را حل کنند. بله، بزرگ است. به طور پیش فرض، برای دیدن آن است که کار می کند، آن را می گوید، "سلام جهان." از کجا آمده است؟ چگونه ما به سلام جهان شد؟ که در آن دقیقا همان کد که در واقع نوشته است که است؟ به درک که، من این مفهوم به نام مسیریابی معرفی. تقریبا تمام چارچوب های وب را به مفهوم مسیریابی، است که در آن قطعه از نرم افزار که یک URL خاص نقشه به قطعه خاصی از کد در چارچوب خود را. به عنوان مثال، اگر شما برخی از URL و شما را به برخی URL مانند foo.com / وبلاگ / همه رفتن پس از آن چه چارچوب است که برای انجام این کار - و یا حداقل آنچه Kohana در حال رفتن به انجام - است آن را برای پیدا کردن یک کلاس به نام وبلاگ کنترل کننده، و آن را برای اجرای تابع به نام اکشن تمام. من می دانم که من صحبت کردن در مورد کلاس ها و توابع، و من می دانم که شما بچه ها کلاس ها و توابع پوشش داده نمی شوند در CS50 رتبهدهی نشده است، اما در حال حاضر، شما می توانید از کلاس فقط به عنوان یک گروه از توابع فکر می کنم، یک روش گروه بندی توابع با هم. این واقعا همه شما نیاز به دانستن. حال اگر در ساختار پوشه های ما نگاه کنید، در داخل پوشه برنامه است یک پوشه دیگر به نام کلاس ها، وجود دارد و پوشه های دیگر کنترل و مدل نامیده می شود. اگر شما در داخل پوشه کنترل نگاه کنید، ما می بینیم این است که یک فایل با نام خوش آمدید وجود دارد، و شما می توانید در اینجا مشاهده کنید یک کلاس به نام کنترل خوش آمدید، و یک تابع به نام صفحه اول اکشن وجود دارد، و چه میکند این مجموعه بدن از پاسخ شما به سلام جهان. این جایی است که کد نوشته شده. سوال دیگر این است که، خوب، من برای رفتن نیست ، اه، اه، اه، / خوش آمدید / شاخص. چگونه من در نهایت به اینجا؟ خب، این تنها به دلیل در اینجا، در انتهای فایل خود راه انداز ما که در آن ما مجموعه های ما شما می توانید ببینید که آنها برخی پیش فرض ها برای شما تنظیم شده است. کنترل کننده به طور پیش فرض خوش آمدید. عمل به طور پیش فرض اول است. به همین دلیل زمانی که ما هیچ چیزی در آن وجود دارد آن را به طور خودکار به کنترل خوش آمدید رفت و شاخص اکشن. همه چیز را حس تا کنون؟ در حال حاضر، شما می توانید بیش از فقط به کنترل کننده به انجام و یک عمل خاص. شما همچنین می توانید در پارامتر به کنترل کننده منتقل می کند. فقط به عنوان مثال، من قصد دارم به اضافه اقدامات دیگر این کنترل به شما نشان دهد. اجازه دهید این عمل را صدا اکو، به دلیل آن را به شما بگویم هر آنچه شما آن را بدهد، و بنابراین من اساسا رفتن به گرفتن یک پارامتر که رفتن به از طریق من به برنامه مسیریابی فرستاده می شود، و همانطور که شما در اینجا می توانید ببینید، این خط در اینجا، شما می توانید ببینید که این اساسا بدان معنی است که شما کنترل، و شما یک /، و شما باید اقدام، و شما را / دیگر، و برای رفتن به پارامترها، و از آنجا که ما این نام ID در براکت زاویه، که بدان معنی است که ما در حال نامگذاری این پارامتر ID. پس از آن در کد کنترل من اگر من می خواهم برای گرفتن نگه دارید که پارامتر، من می توانید از کد که نوشتم استفاده کنید، پیدا کردن پارامتر به نام ID. این چیزی است که من در اینجا انجام داد، و من قصد دارم به بازگشت و می گویند، "شما گفته اید" که. و بنابراین در حال حاضر اگر من به وب سایت ما، من به cs50-kohana/welcome/echo/Helloooo-- بروید آه، درست است. است 1 مرحله I از سمت چپ وجود دارد. این بخشی از ایده های برنامه نویسی است زندگی می کنند. در اینجا 1 چیز است. اجازه دهید را ببینید. بنابراین به طور معمول به طور پیش فرض با تعداد زیادی از این برنامه های کاربردی وب شما باید این چیزی که فایل index.php در URL خود را، چرا که این ایده است که فایل index.php نوع نقطه ورود است از درخواست شما، اما البته، که به نوعی آزار دهنده داشته باشد. شما نمی خواهید به فایل index.php در URL خود را به نظر می رسد، و تقریبا در هر چارچوب وب از جعبه تا به این مشکل اضافه کردن به مسیر، و بنابراین شما را به برخی از اقدامات که قادر به حذف. و به این ترتیب در این مورد، آنچه ما می خواهیم انجام دهیم این است که ما قصد استفاده از یک فایل با نام. htaccess تغییر نام دهید، و این چیزی است که خاص به وب سرور آپاچی است، و می تواند چیزهایی مانند بازنویسی آدرس ها انجام و تغییر مسیر URL ها و غیره و غیره، و Kohana به اندازه کافی خوب به ارائه یک قالب فایل htaccess که ما می توانیم از آن استفاده کنید. همانطور که می بینید، یک فایل وجود دارد به نام example.htaccess وجود دارد، و ما قصد داریم برای کپی کردن است که به. htaccess تغییر نام دهید. من قصد دارم برای باز کردن این و آن را ویرایش کنید، و اساسا آن را یک دسته از چیزهای مختلف. خط کلید شما ممکن است بخواهید به در نگاه است در اینجا. ایده این است که این مجموعه تا یک قانون که می گوید، "بسیار خوب، هر آنچه که شما تایپ می کنید در، اضافه کردن به مسیر prepend به آن." شما می توانید ببینید که. * مخفف برای هر چیزی، مطابقت هر چیزی، و پس از آن قسمت دوم اضافه کردن به مسیر / $ 0 است، و $ 0 به هر آنچه قبلا شده بود. آیا این را حس؟ اما چیزی که واقعا کلیدی من می خواهم به تغییر است تغییر این پایگاه بازنویسی، است که پایه URL. این نوع به عهده می گیرد که در آن شما در حال کار از. من قصد دارم برای اضافه کردن CS50 Kohana به آن، و به این ترتیب در حال حاضر اگر من حذف فایل index.php، آن باید کار کند، و من قصد دارم به اضافه کردن برخی از اعداد به شما نشان می دهد که آن را در واقع انجام کار. به نظر می رسد خوب است. هر گونه سؤال تا کنون؟ [دانشجو] چگونه آن را می دانم بود را به 123؟ آیا این استدلال؟ دقیقا. شما می توانید از آن درست مثل استدلال فکر می کنم. اما چیزی که عجیب و غریب، هر چند، این است که راه Kohana آن را است که آنها را دقیقا مانند استدلال نمی کنند. شما باید آن را گرفتن مثل این. شما باید برای گرفتن شی درخواست و درخواست پارامتر که به نام ID، و این نام ID می آید از آن فایل خود راه انداز که من قبل از آن نشان داد، و به نام ID در آن قلاب شده بود، و این که شما چگونه گرفتن آن پارامترها. بسیار معروف. هر گونه سؤال دیگر؟ من می خواهم گفت، کنترل، که مسئولیت رسیدگی به منطق برنامه، به طوری که 1 به عنوان مثال که در آن شما می توانید that's ببینید - آن را بسیار اساسی است، اما هنوز هم منطق برنامه، ایده گرفتن پارامتر و ایجاد یک رشته جدید که می گوید، "شما گفت، اه،" و سپس تف که به شما. و به طور کلی آنچه که شما انجام دهید این است که شما کنترل های مختلف ایجاد کنید. شما کنترل جداگانه برای قسمت های مختلف وب سایت خود را ایجاد کنید. امروز ما در حال رفتن به یک وب سایت بسیار ساده است، و آن را برای رفتن به یک وبلاگ بسیار ساده است. ما در حال رفتن به یک کنترل جدید فقط برای پست در وبلاگ. اما اگر من به همچنین نظر به وبلاگ اضافه کنید، پس از آن من احتمالا می خواهم یک کنترلر جدید برای کسانی که نظرات. اگر من می خواستم برای اضافه کردن کاربران، من احتمالا اضافه کردن یک کنترل جدید برای آن دسته از کاربران، و به طور کلی، ایده این است که هر زمان که شما یک مدل جدید، یک شی جدید داده است که شما با خرید و فروش، شما یک کنترل کننده تک آن شئ داده است. امروز ما فقط رفتن به محل کار با 1 شی داده ها، و رفتن به پست، و همچنین شما می توانید از اشیاء به عنوان داده های مربوط به جداول فکر می کنم. به طور کلی هر جدول مربوط به 1 نوع شی داده ها، بنابراین جدول نوشته خواهد شد 1 پست مدل داشته باشد، که 1 پست کنترل مربوط به آن داشته باشد، و همین کار را برای نظر، همین کار را برای کاربران، و غیره و غیره. و این یک قانون کلی است. رفتن به موارد خاص که در آن شما ممکن است از آن تفاوت وجود دارد، اما 90٪ از زمان این چیزی است که شما قصد انجام شود، و من به شما این چیزی است که ما قصد داریم برای انجام این کار امروز را نشان می دهد. 1 مفهوم بیشتری قبل از ما شیرجه رفتن دوباره به کد، این ایده از نگاشت رابطه ای شی. شما بچه ها که در حال حاضر انجام می شود pset توسعه وب، و شما را دیده ام که شما پرس و جو SQL را، و هر چه آن را به شما باز می گرداند ردیف می باشد. شما دریافت می کنید این ردیف، و شاخص شما آنها را با برخی از نام، نام ستون و جدول، و این که شما چگونه با آن کار می کنند، و می توان آن را کمی دست و پا گیر. اما علاوه بر این، اگر شما روابط در پایگاه داده خود را، مانند به عنوان مثال اگر من نظر و پست، پس شاید من می خواهم برای گرفتن پست پدر و مادر از نظر. اگر من با استفاده از فقط ردیف در SQL، پس از آن همه من می توانید ID است پس از پدر و مادر و نه پست واقعی خود. اما زمانی که ما در حال برنامه نویسی، آنچه که ما در واقع می خواهم این است که در واقع گرفتن  پدر و مادر گاهی اوقات در پست خود. چه شی نگاشت رابطه ای کند است آن نتایج حاصل از پرس و جو پایگاه داده را می گیرد و آن را تبدیل به اشیاء برای شما، که بسیار بهتر برای کار با از آرایه های ساده و ردیف. به عنوان مثال، در حال حاضر زمانی که من در نظر دارید، و من می خواهم برای گرفتن پست پدر و مادر خود، و من شاید نظر جهت دار پست، سپس آن را در واقع من شی پست را مربوط به پست پدر و مادر واقعی، نه فقط چند ID، که من در غیر این صورت مجبور به استفاده و ایجاد یک پرس و جوی SQL برای گرفتن پست، دست و پا گیر و غیر ضروری است. و علاوه بر این، با نقشه برداری این همه ردیف داده ها را به اشیاء، شما همچنین می توانید توابع بیشتری را به اشیاء ضمیمه، به عنوان مثال، من در مورد کلاس های چگونه اساسا گروه بندی از توابع صحبت کردیم. شما می توانید از آن را مانند که فکر می کنم. به عنوان مثال، شاید من از این نوشته: شی، و شاید من می خواهم به برخی از مرتب کردن بر اساس تابع متصل به آن که اساسا به من می گوید شد آن را به تازگی ارسال شده است؟ بود آن را در هفته گذشته نوشته شده، درست است یا غلط؟ و این یک تابع I می توانید بر روی آن شی متصل است، و این واقعا راحت به آن را در همان محل، و میزبان هستند از توابع مختلف شما می توانید ایجاد وجود دارد برای این اشیاء، و آن را واقعا به خوبی قادر به آن متصل به یک کلاس، به یک شی، در حالی که اگر شما فقط به حال ردیف که از پایگاه داده خود را، سپس شما واقعا نمی توانید به آن وصل کنید هر عملکرد. این به معنای واقعی کلمه فقط داده ها. هر گونه سؤال در مورد که در همه؟ ORMs می باشد توسعه وب بسیار معمول است، و در بسیاری از انواع مختلف ORMs وجود دارد، و Kohana است ORM خود را دارد. این بسیار اساسی است، اما شما طعم از آنچه آن را مانند به نظر می رسد را دریافت کنید. اجازه دهید یک مدل برای پست های وبلاگ ما ایجاد، و اولین چیزی که ما بدیهی است که باید انجام دهید این است برای ایجاد یک جدول واقعی در بانک اطلاعاتی ما در واقع داده های ما ذخیره برای کسانی که پست. اولین چیزی که من قصد دارم برای انجام شده است رفتن به phpMyAdmin. آیا بچه ها قبل از استفاده از phpMyAdmin؟ بسیار خوب، عالی، پس شما بچه ها می دانید چه چیزی است، و من قصد دارم برای ایجاد یک جدول جدید به نام Kohana پست ها، و این می شود واقعا ساده است. من باید به سیستم وارد شوید پشت شوید. همه ما در حال رفتن به انجام امروز یک نویسنده و بدن، فقط نگه داشتن آن ساده است. من قصد دارم برای ایجاد آن جدول، و در حال حاضر ما فقط باید یک جدول به نمایندگی از پست های ما با 2 زمینه برای نویسنده ما و بدن ما. چیز دیگری من می خواهم به انجام این کار نیست. پیکربندی برنامه وب من پس از آن می داند که چگونه به اتصال به پایگاه داده، و این، دوباره، چیزی است که شما باید انجام دهید این را با تمام برنامه های وب است. شما باید آن را به نام کاربر و رمز عبور بگویید و نام پایگاه داده و غیره و غیره برای کشف کردن که چگونه در واقع به پایگاه داده شما متصل شود. در Kohana، ما چیزی به نام ماژول پایگاه داده، و در پوشه پیکربندی ما باید این پوشه را به نام پایگاه داده، و همانطور که می بینید، یک دسته از تنظیمات شما را به مجموعه ای در اینجا وجود دارد به آن بگویید که چه نام کاربری و رمز عبور است برای پایگاه داده، بنابراین من در واقع می تواند به آن متصل شود. و از آنجا که من نمی خواهم شما بچه ها به واقع می دانم نام کاربری و رمز عبور پایگاه داده من، من یک فایل که در آن من در حال حاضر از آن همه راه اندازی، و من قصد دارم به کپی کنید و آن را بیش از پیست کنید. بسیار معروف. خوب. من فکر می کنم که تمام تنظیمات من نیاز به انجام است، اما اجازه دهید را ببینید. ما به حفظ مشغول به کار در آن، و اگر چیزی تصادفات، پس از آن خواهیم آن را برطرف. در حال حاضر آنچه من قصد دارم برای انجام این کار است من قصد دارم برای ایجاد یک کنترل جدید. یا در واقع، متاسفم. اول باید به ایجاد یک مدل جدید است. من یک مدل جدید به نام Post.php خواهید ایجاد کنید، و آنچه ما می خواهیم انجام دهیم این است که ما در حال رفتن به آن را طبقه Model_Post. برخی از نحو برجسته در، و تا زمانی که من می گویم، "گسترش ORM،" که اساسا برخی از برنامه نویسی شی گرا تر، که متاسفانه شما بچه ها در CS50 یاد گرفته نشده است، اما آن را بسیار آسان میسازد. آن را به من می دهد تمام این قابلیت های اضافی می آید که در این بسته ORM، و من یک دسته از توابع اضافی و فلان چیز به صورت رایگان، که شما یک کمی در یک ثانیه را ببینید. در حال حاضر در واقع تمام من باید انجام دهید ایجاد این کلاس. من حتی نیاز به هر گونه عملکرد و یا هر چیزی، اما من یک کلاس است که نشان دهنده جدول ایجاد کرده اید، و چون من این کلاس ORM گسترش داده ایم، من یک دسته از چیزها به صورت رایگان است، بنابراین در حال حاضر شما لازم نیست که به تنظیم هر چیزی تا بیشتر. و در حال حاضر آنچه که من قصد انجام دهید این است که من قصد دارم برای ایجاد یک کنترل جدید، که من قصد دارم به نام blog.php، و من قصد دارم برای کپی بر روی کنترل خوش آمدید بنابراین من مجبور به تکرار برخی مسائل، و در حال حاضر من به تغییر نام این. در حال حاضر آنچه من قصد دارم برای تست کنید تا مطمئن شوید همه چیز را در حال کار کردن، من قصد دارم برای گرفتن اولین ارسال از پایگاه داده من و چاپ در بدن از ارسال بر روی صفحه نمایش. برای انجام این کار چیزی است که من قصد دارم برای انجام این کار برای اولین بار است که من قصد دارم برای نجات پست به یک متغیر چه خوب، ما قصد داریم انجام دهیم این است - در Kohana آنچه شما انجام است را به چنگ شی پست این نوع دست و پا گیر است، اما شما باید انجام دهید این چیزی به نام ORM :: کارخانه، و سپس شما را به نام مدل شما می خواهید عبور، و آن را می گرداند شی ORM است که نشان دهنده آن مدل. و پس از آن، من می خواهم گفت، زمانی که ما گسترش شی ORM، ما تمام این روش ها به صورت رایگان است، بنابراین به عنوان مثال، ما از این عملکرد جدید به نام "پیدا کردن همه" که به طور خودکار هر پست تنها در پایگاه داده را برمی گرداند، که بسیار راحت است. و در حال حاضر در بدن من قصد دارم به بازگشت اولین پست و بازگشت بدن آن است. و البته، من نیاز به ایجاد یک پست، بنابراین اجازه دهید وارد کردن یک پست جدید. من می گویم، "براندون، اولین پست من." بسیار معروف. و در حال حاضر ما قصد داریم برای رفتن به وبلاگ ها و اگر همه به خوبی کار - آه، این برخی دیگر از چیزی که اجازه فایل های گنگ دوباره است. در 1 ثانیه نگه دارید. این نوع از پوچ. وجود دارد می کنیم. خوب. من که مشکل اجازه ثابت. این تلاش بود برای ایجاد بعضی از فایل ها و برخی از ورود به سیستم، و مجوز، دوباره، شد به درستی تنظیم نشده، بنابراین من آن را ساخته شده است بنابراین کسانی که فایل قابل نوشتن و قابل اجرا بود پس از آن در واقع می تواند به همه چیز وارد شوید. در حال حاضر آن را به من دادن یکی دیگر از ضرب المثل استثنا، "ORM کلاس یافت نشد،" و این به خاطر من گام دیگری را فراموش کرده. این خیلی بده. در فایل پوشه خود راه انداز هستند، این ماژول ها در اینجا وجود دارد، که شما می توانید انتخاب کنید برای فعال یا غیر فعال کنید. این ها یک دسته از ویژگی های مختلف که شما می توانید انتخاب کنید برای استفاده در Kohana است که نوع خوب. به عنوان مثال، آنها یک ماژول ورود و خروج که شما می توانید برای تصدیق هویت کاربران استفاده کنید. آنها یک ماژول ذخیره اگر شما می خواهید برای پیاده سازی نوعی از ذخیره به عقب پایان به کار نرم افزار سریع تر و فلان چیز. ما نیاز به فعال کردن پایگاه داده و ماژول ORM، چون مثل من گفت، ما با استفاده از پایگاه داده، بدیهی است، و ما نیز نیاز به فعال کردن ماژول ORM، از آنجا که ما می خواهم به قابلیت های اضافی، که خوب است به. همه من را مجبور به انجام کامنت کسانی که 2 خط است، و در حال حاضر اگر من تازه کردن، آن را به من یکی دیگر از خطا. این گزارش می گوید، "کلاس Model_Post یافت نشد." در حال حاضر این مشکل به خوبی داشته باشد. اجازه دهید را ببینید. آن را عمومی است. شماره رو نگه دار. آه، عزیزم. من نمی دانم که چرا آن را قادر به پیدا کردن که نیست. این واقعا عجیب و غریب. من این کلاس در اینجا ببینید. من حدس می زنم من ممکن است که - آه. من گنگ هستم. من را فراموش کرده برای اضافه کردن یک تگ PHP. به همین دلیل است. حالا من به خنثیسازی که 1 تغییرات من فقط. باشه. وجود دارد می کنیم. این واقعا احمقانه بود. من یک تگ PHP باز ندارد. اما همانطور که مشاهده می کنید، در حال حاضر آن را به کار درست، درست است؟ ما 1 ارسال. ما به گل تبدیل شد اولین ارسال، و در حال حاضر ما چاپ شده از بدن است. بزرگ. فوق العاده است. هر گونه سؤال تا کنون؟ نه؟ هر گونه سؤال؟ خوب، پس ما فقط ایجاد مدل نشده، بسیار اساسی، و ما قصد داریم به اضافه کردن برخی از توابع بعد. ما می توانیم امکان سنجی و فیلتر اضافه کنید. امکان سنجی یکی از چیزهایی است که چارچوب را برای شما حل واقعا، واقعا خوب، و من فکر نمی کنم شما بچه ها تا به حال به انجام این کار برای pset CS50 خود را، اما اگر شما توسعه وب را برای پروژه نهایی خود را، شما به احتمال زیاد تمایل به انجام نوعی از اعتبار سنجی، مانند در اختیار داشتن نام کاربر خالی نیست، شاید داشتن یک رمز عبور با حداقل برخی از طول، چیزهایی مانند آن. و این واقعا دست و پا گیر برای پیاده سازی این چیز توسط خودمان، و تقریبا در هر چارچوب وب تنها آن را برای شما و به شما اجازه انجام این کار را به شیوه ای بسیار تمیز. و مدل است که در آن شما به طور کلی بیان این قوانین اعتبار سنجی، زیرا این اعتبار که آیا یک مدل معتبر است یا نه. اما در حال حاضر، ما قصد داریم برای قرار دادن که تا بعد، و در حال حاضر ما در حال رفتن به کار در بخش دیگری، و ما قصد داریم به تلاش و ایجاد یک دیدگاه جدید که لیست تمام پست. مراحل مربوط به ساخت یک اقدام جدید برای لیست تمام پست ها است برای گرفتن یک لیست از تمام ارسال ها و پس از آن ارائه لیستی از تمام ارسال ها از طریق یک نمایش. حق در اینجا، خوشبختانه به اندازه کافی، ما در حال حاضر برداشت همه ارسال ها با استفاده از این خط اول، پیدا کردن همه تابع، و در حال حاضر آنچه ما می خواهیم انجام دهیم این است که تا کنون من شده است به طور مستقیم تنظیم کرده ایم بدن در پاسخ با عبور رشته، اما در حال حاضر من می خواهم به استفاده از یک دیدگاه، و تفاوت بین دیدگاه و فقط به انجام این کار با در نظر من می توانم خوب، قالب HTML بزرگ، و آنچه که من می تواند انجام دهد این است که با تصویب آن متغیر خاص و پس از آن است این دیدگاه به طور خودکار قالب آن جمعیت با استفاده از آن متغیرها. چه من انجام دهید این است که من یک نظر جدید را ایجاد، و من به نظر چیزی شبیه به نام "وبلاگ / شاخص،" و من قصد دارم در واقع این اتصال - آه، چه هستم من در نوشتن؟ مغز من جای دیگری است. من قصد دارم برای اتصال ارسال متغیر به این دیدگاه، به طوری که راه از نظر دسترسی به این پست متغیر است. و بنابراین در حال حاضر من نیاز به ایجاد این دیدگاه، بنابراین در اینجا ما باید این پوشه به نام "نمایش" و برای اولین بار، من قصد دارم برای ایجاد یک پوشه جدید در زیر آن به نام "وبلاگ" این خوب است. به این ترتیب ما می توانیم یک سلسله مراتب خوب برای دیدگاههای خود را داشته باشد. و سپس من قصد دارم برای ایجاد یک فایل دیگر در آن وجود دارد به نام "اضافه کردن به مسیر." بسیار معروف. در واقع، اجازه دهید هر دو آنها را در اینجا. ساخت یک فایل مشخصات احتمالا ساده ترین بخشی از این همه، و این چیزهایی را که در حال حاضر با آن آشنا هستید احتمالا. ما قصد داریم برای انجام کاری واقعا ساده است، شروع کرد و گفت، "لیست من از پست های وبلاگ." سپس ما را از طریق می تواند، و ما می توانیم از طریق آرایه پست تکرار، با شتاب هر پست تنها و چیزی شبیه به می گویند - شاید اضافه کردن یک خط و سپس از چاپ نویسنده و بدن است. این حس را تا کنون؟ و اجازه دهید ببینید که اگر آن کار می کند. هیچ چیز اتفاق افتاده است. من تعجب می کنم که چرا. اوه، من از دست رفته مرحله 1. بسیار احمقانه از من. من یک نظر ایجاد شده است، اما من این دیدگاه را به عنوان پاسخ تنظیم شده باشد، بنابراین شما مجبور به انجام کاری 1 بیشتر. شما باید برای انجام "این بدن پاسخ" و مجموعه ای را به مشاهده آن دارید. وجود دارد می کنیم. ما عنوان ما، و پس از آن ما باید یک پست، و فقط برای ضربات، اجازه دهید یکی دیگر از پست وارد بنابراین ما می توانیم یک لیست را ببینید. و قرار دادن این 2 پست، و در حال حاضر اگر من صفحه را تازه کنید، ما می بینیم همه این پست اینجا. آیا این را حس تا کنون؟ بله، یک سوال؟ آه، درست است. همانطور که می بینید، ما قادر به جدا کردن همه این کدهای از شده است را به بخش های مختلف، و سپس شما می توانید ببینید که آن را بیشتر روشن با کد نظر. این فایل در اینجا است که نشان دهنده این دیدگاه، آن را تنها در مورد نمایندگی داده ها، نمایش داده ها اهمیت می دهد. این می شود منتقل می شود نوعی از داده ها، و همه آن کند است فقط آن را به شما نشان دهد. در تمام قسمت های دیگر از کد خود را، شما نمی خواهد باید در مورد هر یک از آن نگران است، و به همین ترتیب، کد نظر شما نیست که نگران باشید هر چیزی در مورد چگونه برای دسترسی به پایگاه داده و غیره و غیره، است که واقعا خوب است و باعث می شود کد شما به مقدار زیادی قابل نگهداری است. من می خواهم گفت، نمایش، آنها پویا در آن هستید 1 فایل است، اما آن را از دیدگاه های مختلف تولید بر اساس متغیرهای شما در واقع عبور در، و علاوه بر این، بسیاری از توابع مختلف کمک کننده وجود دارد که شما می توانید استفاده کنید برای کمک به نوشتن کد خود را سریع تر، که من شما را در یک ثانیه نشان می دهد. آره. [دانشجو] بنابراین $ 0 کنترل است، درست است؟ این نکته دوم. سوال این است که، 0 دلار در کنترل؟ 0 $ یک متغیر I را در اینجا ایجاد شده است. من یک نظر ایجاد شده است. من آن را به برخی از متغیر اختصاص داده. سپس من آن را به این تابع، آن را به عنوان بدن از پاسخ تنظیم شده است. آیا این را حس؟ [دانشجو] بنابراین نظر :: کارخانه است، نمایش شبیه به یک کلاس است و یا یک کتابخانه [نامفهوم] عملکرد کارخانه؟ سوال این است که در مورد تابع view :: کارخانه، و اساسا این برخی از برنامه نویسی شی گرا تر در اصل است. مشخصات کلاس مشاهده است، و آن را به یک روش به نام "کارخانه" و این راه را به چنگ شی است که به نام است "وبلاگ / شاخص." و که برخی شی گرا مسائل برنامه نویسی بیشتر که من قصد ندارم به اینجا بیش از حد. حالا بدیهی است، ما می خواهیم به ایجاد پست جدید، اما ما نمی خواهیم به آن را انجام دهد از طریق یک پایگاه داده، بنابراین ما قصد داریم برای ایجاد یک اقدام جدید برای ایجاد یک پست جدید، و بسیاری از چیزهایی که ما باید انجام دهید وجود دارد. اولین چیزی که ما قصد داریم به کار - اجازه دهید این چیزها مقابله یک به یک. اولین چیزی که ما را انجام دهد این است که ما باید به ایجاد یک فرم برای قرار دادن یک پست جدید، اما من هم رفتن برای اضافه کردن یک اقدام جدید برای اولین بار، بنابراین اضافه کردن یک اقدام جدید است فقط به سادگی اضافه کردن یک تابع جدید با کنترل خود، و در حال حاضر من قصد دارم برای انجام کاری بسیار اساسی، فقط این نظر گرفتن و بعد از آن، فقط آن صفحه نمایش را برای شما. و پس از آن در حال حاضر من قصد دارم برای ایجاد یک فایل دیدگاه جدید، و من قصد دارم شروع به نوشتن برخی از مسائل. چه خوب است در مورد Kohana است که آنها را به بسیاری از توابع مختلف کمکی را برای شما به ارسال نظر کد به راحتی، و 1 از آن دسته از توابع کمکی و یا ماژول های کمکی در اطراف نوشتن اشکال. برای نوشتن فرم ها، من واقعا نیست که به طور مستقیم ارسال هر گونه HTML خودم. شما بچه ها فرم های HTML نوشته شده اند. شما می دانید که چگونه می توان آن را واقعا، واقعا دردناک و دست و پا گیر به ارسال اشکال. آن را سرگرم کننده نیست، بنابراین خوشبختانه، ما اساسا می تواند یک فرم با استفاده از در Kohana ارسال تشکیل توابع کمکی برای این کار را برای ما. ما قصد داریم در واقع زمینه را برای هر چیزی که تک ما، بنابراین یکی برای نویسندگان و یکی برای بدن. ما در حال رفتن به یک برچسب، و ما در حال رفتن به یک ورودی می باشد. و سپس در نهایت، ما قصد داریم به تسلیم. و همانطور که می بینید، این است که بسیار تمیز کننده به ارسال از همه که HTML کثیف، است که نوع خوب. اعطا شده، از دیگر چارچوب های وب است که آن را حتی پاک تر از آن وجود دارد، اما حداقل این بهتر از نوشتن HTML به خودتان است. بسیار معروف است، بنابراین این همان چیزی است که شما می بینید. این نوع کثیف، من می خواهم برای اضافه کردن یک خط وجود دارد را که نگاه کنید کمی بهتر است. خب، البته، هنوز هم به نظر می رسد واقعا، واقعا بد است، اما ما فقط تمرکز در قابلیت در حال حاضر و نه در زیبایی شناسی. هیچ وقت برای انجام همه چیز. و همانطور که می بینید، در حال حاضر ما به صورت فوق العاده عمومی، که نوع خوب. این کد من می گویند پاک تر از تلاش برای نوشتن HTML را تشکیل خودتان است، به طوری که به خوبی. گام بعدی چیست؟ در حال حاضر ما نیاز به انجام کارهای با عمل است. به طور معمول هنگامی که شما ارسال اشکال HTML، شما باید آن را به جایی که آن را برای ارسال فرم به. به طور پیش فرض در بسیاری از چارچوب های وب، آن را به همان URL دقیق آن تسلیم است، بنابراین چیز است، اگر شما یک درخواست GET را به / وبلاگ / جدید، که باید شما به صورت نمایش، اما اگر شما یک درخواست ارسال ارسال را به / وبلاگ / جدید را با اطلاعات، آن را در واقع باید سعی کنید که جز پست و انجام کاری با آن. چه ما می خواهیم انجام دهیم این است در واقع همه ما باید انجام دهیم برای بررسی اینکه آیا این یک درخواست ارسال و یا یک درخواست GET است برای بررسی متغیرهای پست شما می توانید مجموعه چه هستند. و اگر متغیر پست قرار است، پس از آن ما قصد داریم به تلاش و ایجاد یک پست جدید. باز هم، ما فقط این کار، و ایجاد یک پست جدید، و ما به معنای واقعی کلمه رفتن به مجموعه زمینه های آن مانند این، و پس از آن ما در حال رفتن به آن را ذخیره کنید. و سپس من قصد دارم به تغییر مسیر به صفحه فهرست به طوری که آنها می تواند ما را از لیست پست را دوباره ببینم. بیایید سعی کنید که. من می گویم، "براندون" و پس از آن ارائه نشده، و اگر همه به خوبی می رود، همانطور که می بینید، آن را به من هدایت می شوید به صفحه اول، و اگر من به پایین حرکت کنید، ما یک ارسال تازه وارد می شود. عالیست! آره، سوال. [دانشجو] اگر وارد همان چیزی که دقیق بود شما قبل از وارد؟ آیا آن را چک کنید تا مطمئن شوید که شما تکرار نیست همان تسلیم؟ شود به طور پیش فرض، هیچ، چرا که به طور پیش فرض - با عرض پوزش، سوال این است که اگر شما در داده های یکسان را در فرم وارد کنید و ارائه آن، آن را به شما اجازه وارد کردن یک شی های تکراری، تکراری ورود، در اصل؟ در حال حاضر، بله، آن را به شما اجازه می دهد برای انجام این کار، چرا که در پایگاه داده های آن را کاملا معتبر به ردیف کاملا تکراری، اما در صورتی که یک نگرانی است، سپس شما می توانید امکان سنجی اضافه کنید، به عنوان مثال، مطمئن شوید که در صورتی که این دقیقا همان چیزی است که از قبل وجود دارد، پس از آن می گویند که آن را به یک شی نامعتبر است، و پس از آن شما حتی می توانید پیام خطا را مشخص و می گویند، "اشتباه است چرا که این از قبل وجود دارد" و یا چیزی شبیه به آن. اما در این مورد، من می توانم تنها چیزی تکراری ایجاد کنید. حالا اجازه دهید امتحان کنید و اضافه کردن برخی از امکان سنجی. مشکل با این در حال حاضر این است که من به معنای واقعی کلمه می تواند یک پست به طور کامل خالی ارسال کنید. من می توانم این دکمه کلیک کنید در حال حاضر، وجود دارد و ما بروید. شما واقعا نمی توانید آن را ببینید، اما این خط اضافی در اینجا نشان می دهد که من به معنای واقعی کلمه یک پست جدید داشته باشد. این فقط یک نویسنده خالی و بدن خالی، و ما نمی خواهیم که به مردم اجازه می دهد برای انجام این کار. این جایی است که اعتبار سنجی می آید. I می تواند به مدل شیء رفتن من، و در حال حاضر من می توانم یک تابع جدید است که مشخص اضافه کنید چه قوانین اعتبار سنجی من باید به این مدل اضافه مطمئن شوید که معتبر است و یا به مشخص کنید که چه معنا آن را به یک پست معتبر است؟ و من می خواهم بگویم آن را تنها یک پست معتبر است اگر هر دو نویسنده و بدن می باشد خالی نیست، و این است که چگونه شما آن را انجام دهد در Kohana. شما یک تابع جدید به نام "قوانین" ایجاد و پس از آن شما اساسا بازگشت یک آرایه انجمنی که قوانین اعتبار سنجی برای این شی را تعریف می کند. ما قصد داریم به بازگشت به آرایه، و پس از آن چیزی است که ما قصد داریم به کار است می گویند "نویسنده،" آن را به یک آرایه می رود، که می رود به آرایه دیگری به نام "خالی نیست." و سپس من قصد دارم برای گفتن "بدن است." بسیار خوب، و نحو برای این و ساختار این ممکن است دست و پا گیر کمی و کمی پیچیده است. اگر شما خواندن اسناد و مدارک، آن را بسیار ساده به شکل، اما در اصل این چیزی است که شما باید انجام دهید را مشخص برخی از قوانین اعتبار سنجی، و در بسیاری از قوانین مختلف وجود دارد که Kohana شما را به صورت رایگان را، مانند شما می توانید قوانین اضافه به می گویند باید حداقل این طول خواهد بود. شاید آن را به عددی. شاید آن را به عددی آلفا. شاید آن را به حداکثر می شود این طول، غیره و غیره. هستند بسیاری از قوانین مختلف که Kohana فراهم می کند برای شما وجود دارد، و شما می توانید بر روی وب سایت خود را، در اسناد نگاه کنید، و شما می توانید تمام چیزهای مختلف است که شما می توانید انجام دهید را ببینید. اما این تمام من مجبور به انجام آن، و در حال حاضر بیایید ببینید چه اتفاقی می افتد اگر من یک پست خالی ارسال کنید. چه اتفاقی خواهد افتاد؟ اوه، نه، من خطا. من یک استثنا اعتبار سنجی. خوب، آن را خوب است. این به من گفت که مدل من نامعتبر است، اما من نمی خواهم برای نشان دادن یک استثنا به کاربران من وقتی که آنها سعی می کنند برای ارائه چیزی نامعتبر، درست است؟ من می خواهم به آنها نوعی از پیغام خطا دوستانه را هنگامی که چیزی را اشتباه می رود. چه ما می خواهیم انجام دهیم این است که ما قصد داریم به قرار دادن همه چیز را در یک حلقه گرفتن امتحان کنید. در واقع، من فکر می کنم این هم چیزی است که شما آموخته اند که هنوز در CS50، چون C، زبان برنامه نویسی C، یک استثنا نیست، اما تقریبا در هر زبان دیگری است استثنا، پس واقعا، واقعا به طور خلاصه، یک استثنا چیزی است که یک قطعه از کد می تواند باشد یک استثنا هنگامی که چیزی را اشتباه می رود، اما پس از آن شاید برخی از قطعه دیگری از کد بالاتر می تواند که به جز گرفتن و انجام کاری با آن. برای مثال، در این مورد، قطعه از کد را که در تلاش برای نجات یک مدل، آن را به تایید مدل، و اگر آن را می گوید، "خوب، این مدل نامعتبر است" آن را به یک استثنا، و این نوع از معادل است در C شما ممکن است با -1 یا چیزی شبیه به آن بازگشت. و پس از آن برای من، این تابع، کد من در یک سطح بالاتر، من می توانید سعی کنید و گرفتن که استثنا و اساسا گفت، "خوب، اگر من گرفتن استثنا، چه هستم من کاری انجام دهید؟" یا من می توانم را انتخاب کنید برای گرفتن نیست که استثنا و اجازه دهید کسی بالاتر گرفتن استثنا، یا اگر هیچ کس آن را خوش، سپس برنامه تمام برنامه قفل و می گوید: "مشکلی، و من می توانم آن را تحمل کنم." اما آنچه ما انجام می دهیم این است که شما بسته بندی کردن قطعه از کد را در یک بلوک try، و سپس شما نیز چیزی به نام بلوک catch اضافه کنید، که نوع کد که سعی خواهد کرد و گرفتن استثنا است که ممکن است رخ دهد است. و به این ترتیب اگر من گرفتن این استثنا خاص و یا به جز باطل، پس از آن چه من قصد دارم برای انجام شده است من قصد دارم به مجموعه ای از خطاها - من فکر می کنم که چگونه من آن را انجام دهید - و من قصد دارم به راه خطا به. و پس از آن چه من می خواهم به انجام این کار است اگر از آن بازدید از این استثنا، آن را به تغییر مسیر، و اگر آن را نشانی از تغییر مسیر نیست، آن را به خارج از اگر وبلاگ می آیند و ضربه زدن به این وبلاگ / جدید، که می خواهم من می خواهم به انجام. در صورتی که خطا وجود دارد، پس من می خواهم برای رفتن به فرم و نمایش آن خطا است. در حال حاضر آنچه من می خواهم به انجام این کار است من می خواهم به تصویب در همان اشتباهات را به نظر. خوب، من فکر می کنم من با نظر حق در اینجا، و اساسا من می خواهم برای نشان دادن همان اشتباهات را در صورتی که وجود داشته باشد. قبل از اینکه من نوشتن HTML برای آن، من قصد دارم واقعا به سرعت شما نشان می دهد که ساختار این خطا به نظر می رسد متغیر را دوست دارم، و این یک تمرین خوب به طور کلی است. بسیاری از اوقات شما چیزی را از برخی روش، برخی از عملکرد در چارچوب وب، و شما نمی دانید که چه متغیر به نظر می رسد، بنابراین شما نمی دانید که چگونه به کار با آن است. من قصد دارم به استفاده از روش چاپ R اساسا آن را چاپ کنید. و به عنوان شما می توانید آن را ببینید، به من می گوید آن را به یک آرایه کاردانی، و شما باید یک کلید، نویسنده، امتیاز به این رشته، نویسنده نباید خالی باشد، و کلید دیگر، بدن، امتیاز به یکی دیگر از رشته، بدن نباید خالی باشد. من دوست دارم، خوب، بامزه هستم. سپس من می توانید از طریق آرایه و چاپ هر پیام واحد است. این در واقع شبیه به یک آرایه انجمنی با یک دسته از پیام است. چه من قصد دارم برای انجام شده است "اگر اشتباهات،" و من قصد دارم برای ایجاد یک لیست نامرتب، و من قصد دارم از طریق تمام خطاها را تکرار. و این، و در حال حاضر من قصد دارم به سعی کنید این دوباره، و اجازه دهید ببینیم که چه چیزی ما را دریافت کنید. در حال حاضر ما را دریافت کنید به این لیست خوبی از اشتباهات، و این هنوز هم خیلی زشت است، اما این واضح است که می تواند فرمت شده به نگاه زیبا، اما ایده اولیه این است که فقط در چند خط از کد، ما قادر به تایید اعتبار مدل ما بودند، مطمئن شوید که زمینه های خاصی بود خالی نیست، و اگر چیزی را اشتباه رفت، و سپس بازگشت برخی از پیام خطا من پس از آن می تواند به عقب ارائه به کاربر. شما همچنین می توانید اعتبار خود را سفارشی کنید به طوری که شما می توانید پیام خطا است که مشخص تر به برنامه یا چیزی شبیه به آن است. آنچه به طور کلی قابل تنظیم است. متاسفانه، ما در حال اجرا خارج از زمان، بنابراین من قصد دارم به قطع جلسه برنامه نویسی زندگی می کنند در اینجا. یک دسته از ویژگی های دیگری که من می خواهم برای نشان دادن برای شما وجود دارد در این مثال. به عنوان مثال، شما می توانید قالب ها را به سایت خود اضافه کنید، بنابراین شاید نوعی از کد HTML که شما می خواهید به درخواست وجود دارد به هر صفحه تنها به سایت خود، و به جای چسباندن که در هر فایل نمایش پست تنها شما، که به وضوح می تواند یک عمل بد، شما در واقع می تواند به تعریف این قالب ها، و پس از آن در کنترل خود گفت، "خوب، من با استفاده از این الگو." "آیا به همه نظرات من استفاده از این قالب." و آخرین چیزی که من می خواهم به شما نشان دهد و همچنین که ما هم برای کراس سایت اسکریپت است را نداشته باشند، و اساسا من فکر می کنم شما بچه ها احتمالا در CS50 دیده می شود - من فکر می کنم دیوید مالان احتمالا در مورد چگونه شما معمولا می توانید تزریق صحبت کردیم کد جاوا اسکریپت را - که شما را در این مورد صحبت؟ شاید؟ شاید نه؟ اما بسیاری از اوقات شما می توانید کد جاوا اسکریپت مخرب تزریق به پایگاه داده کسی، و اگر آنها فرار نیست که به درستی، پس از آن زمانی که آنها در حال حاضر که اطلاعات را به کاربر، سپس آن را ممکن است به نوعی از کد جاوا اسکریپت تصادفی شما نمی خواهید به اتفاق اجرا شود، و من که قرار بود نشان دهد که چگونه شما می خواهم انجام که در Kohana. در واقع این واقعا، واقعا آسان است. من می توانم آن را در حال حاضر در 2 ثانیه به معنای واقعی کلمه انجام دهد. همه شما باید انجام دهید این است که اساسا این چیزها بسته بندی در این چیزی به نام سازمان های HTML. و این به طور خودکار فرار از تمام شخصیت ها به درستی و مطمئن شوید که شما این مشکل می کنید. [دانشجو] شما اولین آزمایش املای اشتباه است. [براندون لیو] اوه، اوه. خوب، که همه من تا به حال برای به اشتراک گذاشتن با شما برای امروز. این اسلاید می خواهید می شود نوشته شده است، اما این به طور کلی تنها منابع شما واقعا باید نیاز به با Kohana آغاز شده است. شما می توانید به وب سایت بروید. آنها یک راهنمای کاربر، و آنها کاشف API نیز داشته باشد. ما می توانیم تمام توابع مختلف و توابع کمکی آنها را برای شما بررسی. آنها به طور کلی اطلاعات کافی در وب سایت که شما می توانید استفاده کنید برای شروع و رفتن با Kohana. وجود ندارد که بسیاری از آموزش، من فکر می کنم، برای Kohana، در خارج از آنچه را که آنها بر روی وب سایت در اینجا، بنابراین این است که احتمالا بهترین شرط بندی شما. اما اگر شما می خواهید با چارچوب وب و شما نمی خواهید به انتخاب کنید تا به یک زبان جدید، و شما می خواهید چیزی است که نسبتا سبک وزن و دارای یک منحنی یادگیری آسان، من قطعا نشان می دهد Kohana. این احتمالا بهترین ارائه برای آن. جالب است این است که اگر ما در آهن با استفاده از روبی، ما می تواند تکرار کرده اند چیزی است که ما فقط و احتمالا در کمتر از 3 دقیقه. بدون شوخی است، اما یادگیری روبی در آهن طول می کشد بسیاری دیگر از آن بود را به یاد Kohana. این اساسا انتخاب شما در مورد آنچه که می خواهید را انتخاب کنید تا بیاموزید، اما اگر شما می خواهید برای دریافت و در حال اجرا به سرعت، Kohana است که قطعا یک انتخاب بسیار خوب است. هر گونه سؤال قبل از پایان دادن به ما؟ بله. [دانشجو] چگونه ما یکپارچه است که در چارچوب CSS مثل شما بودند با استفاده از زمانی که شما دستور شد؟ سوال این است که چگونه ادغام می کنیم که با یک چارچوب CSS؟ آنچه که ما احتمالا انجام دهید این است که ما احتمالا شامل یک پوشه جدید که در آن ما را تمام فایل های CSS ما کمپرسی، و سپس ما همچنین می خواهم یک قالب جدید اضافه کنید. در قالب ما می خواهم شامل آن دسته از فایل CSS مطمئن شوید که آنها در هر صفحه تنها اشاره شده، و پس از آن هنگامی که شما در واقع در حال نوشتن HTML، شما فقط اضافه کردن کلاس و فلان چیز مناسب، و به عنوان مثال، زمانی که شما با استفاده از چیزی شبیه به شکل تابع کمک کننده، شما می توانید پارامترهای تر پس از آن اضافه برای مشخص کردن کلاس های درس می خواهید به چیز های مختلف متصل شده به طوری که آنها می تواند آن را به درستی سبک، و اساسا چگونه می خواهید بروید. هر گونه سؤال دیگر؟ بسیار معروف. با تشکر از شما برای وقت خود و با تشکر از شما برای آینده. من که قرار بود برای اضافه کردن بسیار دیگری، اما 1 چیزی که واقعا سریع است که ما یک لینک ندارد را به فرم. واقعا گنگ. اجازه دهید اضافه کردن یک - در واقع در این دیدگاه، وبلاگ، صفحه اول، بیایید واقعا به سرعت اضافه کردن یک لینک است که می رود به صفحه جدید، صفحه که در آن ما می توانیم یک پست جدید وارد کنید. ما قصد داریم برای انجام این کار. چه خوب است این گروه کل از توابع کمکی HTML وجود دارد که انجام کارهای مختلف را برای شما، بنابراین شما در حال حاضر شاهد اشخاص تابع در اینجا، اما آنها نیز یک تابع به نام "لنگر" که شما می توانید نوع در وبلاگ / جدید و می گویند، "ارسال یک وبلاگ جدید است." و آن را که لینک را برای شما ایجاد، و این به نظر می رسد واقعا بی اهمیت را انجام دهید، اما این خوب است، چون فرض کنید که شما در حال حرکت وب سایت خود را از 1 دامنه را به دیگری. و اگر شما فقط خودتان را نوشت: از آدرس ها، پس از آن شما را مجبور به تغییر تمام آدرس ها. یا شاید شما آن را از 1 زیرپوشه به زیر پوشه دیگر منتقل کرد. شما مجبور به تغییر تمام کسانی که آدرس خود را، و هیچ سرگرم کننده است. شما می توانید این لنگر در اینجا استفاده کنید، و شما می توانید دامنه یا پیشوند زیر پوشه را تغییر دهید در فایل پیکربندی یک بار، و پس از آن که در همه جا اعمال می شود، و این است که، دوباره، به عنوان مثال بزرگ آیا تکرار خود، خشک کردن کد شما است. هر جا که شما خودتان را تکرار کنید، سعی کنید و استخراج در نوعی از فایل پیکربندی یا به یک تابع متفاوت است و آن را اداره کرده اند که برای شما. و آخرین چیزی که من می خواستم به شما نشان دهد بود فرض کنید ما در این پست، و من مقداری مقاله واقعا طولانی تشکیل شده بود، اما من را فراموش کرده به عبارتند از نویسنده من. حالا وقتی که من کلیک کنید "ارسال پست،" من فقط همه چیز را از دست داده است. نه! واقعا غم انگیز است. پس چگونه می توانم شما را با آن مقابله؟ این چیزی است که ما انجام می دهیم. آنچه ما انجام دهیم این است در اینجا برای این ورودی و متن توابع، اگر ما شامل پارامتر دوم، و سپس مقدار آن پارامتر دوم در حال رفتن به آنچه که درست است که رفتن به ابتدا با جمعیت. چه ما می توانیم انجام دهیم این است در کنترل وبلاگ ما، ما می تواند متغیر دیگر متصل شوند. تماس با آن "ارزش" شاید. و با تصویب در آرایه پست، به معنای واقعی کلمه. این بدان معنی است که اگر اعتبار شکست خورده، عبور به من آرایه ای پست که من از آخرین درخواست های ارائه شده، و به این ترتیب من می توانم ارزش از آخرین ارسال من استفاده کنید به تکثیر شوند زمینه. در حال حاضر من می تواند چیزی شبیه به ارزش نویسنده انجام و ارزش های بدن، و به این ترتیب در حال حاضر اگر من انجام برخی از چیزهای تصادفی و بر روی "ارسال پست،" پس از آن باقی می ماند وجود دارد. اما ما قصد داریم برای اجرا به مشکل دیگری. کار می کند که، اما اگر من به این صفحه بروید اولین بار، آن را به سقوط، و این به آن دلیل اولین بار ما به این صفحه بروید، این پست متغیر هنوز به درستی مشخص نشده است. این تهی. این وجود ندارد. و کاری که ما می خواهم بگویم این است که اگر این کلید وجود دارد، و سپس بازگشت مقدار این آرایه، اما اگر کلید وجود ندارد، و سپس بازگشت یک رشته خالی. این قابلیت ما در اینجا می خواهیم است. ما می خواهیم به بررسی در صورتی که کلید را پیش از تلاش برای دسترسی به آرایه وجود دارد، و خوشبختانه به اندازه کافی، Kohana نیز به ما می دهد یک تابع کمکی برای که. آنها این مجموعه کامل از توابع تحت نام ARR، کوتاه برای آرایه، و آنها را به 1 تابع به نام "دریافت" و شما می توانید در آرایه عبور، و شما می توانید به نام کلید منتقل می کند. سپس اساسا آنچه در آن انجام خواهد داد آن را امتحان کنید برای دریافت کنید که کلیدی، اما در صورتی که کلید در آرایه وجود ندارد، سپس آن را خالی باز خواهد گشت، و ما نیز می تواند به طور پیش فرض مشخص، به اعتقاد من، که خوب است. حال اگر همین کار را دوباره، پس از آن شما در حال حاضر کار می کند اولین بار، و دوباره، اگر ما در برخی از چیزهای تصادفی تایپ و سعی کنید و ارسال کنید، سپس آن باقی می ماند وجود دارد. و من حدس می زنم من نیز می تواند به شما چگونه برای اضافه کردن یک قالب واقعا به سرعت نشان می دهد. چیزی که ما برای اولین بار می توانید انجام دهید این است که ما می تواند یک دید جدید به نام "template.php" اضافه در پوشه نمایش ها، و آنچه من قصد دارم برای انجام این کار است من قصد دارم به نسخه قابل چاپ کردن چیزی به نام "محتوا" است که برای رفتن به محتوای اصلی من است. و شاید در خیلی پایین من قصد دارم به اضافه کردن، می گویند، کپی رایت. [سوال دانش آموز نامفهوم] [براندون لیو] شاید این یک قالب فوق العاده اساسی من می خواهم برای استفاده است. من می خواهم به یک پوشه با کپی رایت من در هر صفحه، و در حال حاضر آنچه که من قصد دارم در کنترل من انجام در حال حاضر به جای گفتن، "گسترش کنترل" من قصد دارم برای گفتن، "گسترش Controller_Template،" و در حال حاضر به جای گفتن، "بدن پاسخ به این نظر برابر" من قصد دارم که می گویند، "این مطلب به این الگو است -" و من فکر می کنم - آیا یک علامت تساوی قرار داده I؟ من را فراموش کرده ام. بله، من فکر کردم تا. و در حال حاضر من مجموعه ای است که متغیر محتوا را برابر این دیدگاه. من می توانم در اینجا همان انجام دهد. و در حال حاضر اگر من تازه کردن، شما هم اکنون می توانید این کپی رایت وجود دارد اضافه شده است، و فقط بعضی از پست های تصادفی را، و پس از آن، دوباره، شما باید ببینید که کپی رایت در پایین صفحه استفاده کنید. بزرگ. این همه من می خواستم به شما بچه ها نشان می دهد. [تشویق حضار] هر گونه سؤال؟ [CS50.TV]