>> [ندوة] [Kohana: إطار PHP خفيفة الوزن]
[براندون ليو] [جامعة هارفارد]
[هذا CS50.] [CS50.TV]
مرحبا >> الجميع. اسمي براندون.
أنا هنا المبتدئين في الكلية القيام علوم الكمبيوتر، واليوم نحن بصدد الحديث عن
Kohana، وهو إطار تطوير الشبكة PHP.
اليوم ستكون ندوة الترميز الحية،
لذلك أنا في الأساس ذاهب لقضاء 5-10 دقائق شرح ما هو Kohana،
ثم أنا حرفيا ذاهب لبناء بلوق السوبر بسيطة
لك الحق هنا حرفيا من الصفر.
ونحن في طريقنا لتحميل رمز من موقع Kohana،
ونحن في طريقنا للبدء في بناء بلوق، ونأمل انها سوف تكون مفيدة جدا،
لأنك سترى ربما ربما سوف تجعل بعض الأخطاء،
وسترى لي الشفاء منها،
أو سترى بلدي عملية التفكير كما كنت بناء من خلال هذا بلوق،
وفي الوقت نفسه، عليك أيضا الحصول على دراية الإطار نفسه.
نأمل انها سوف تكون ممارسة مفيدة جدا.
>> أولا، ما هو بالضبط الإطار؟
إذا كنت قد تم اتخاذ CS50 حتى الآن، لم تكن قد عملت حقا مع أي
الأطر حتى الآن، والشيء هو هذا.
ربما كنت قد فعلت 1 pset تطوير الشبكة بالفعل،
ودعونا نقول لكم الاستمرار في بناء المواقع والحفاظ على بناء المواقع.
عليك أن تبدأ لاحظت وجود عدد قليل من الأشياء.
أول شيء ستلاحظ هو أنك ربما تفعل نفس الأشياء
مرارا وتكرارا في كل وقت،
الأشياء مثل تنظيف البيانات إدخال المستخدم،
أشياء مثل تنظيم الملفات الخاصة بك بطريقة معينة.
الشيء الآخر عليك أيضا ربما لاحظ أن التعليمات البرمجية
قد تبدأ لتصبح جدا، فوضوي للغاية،
وكنت قد ترك الأمر فوضوي وفقط لديهم وقتا عصيبا للغاية الحفاظ عليه،
أو قد تبدأ في تنظيم التعليمات البرمجية الخاصة بك وجعلها وحدات
في بعض الطرق لجعله أكثر تستعصي على الحل.
هذا هو المكان >> أطر الويب جاءت أساسا فيها.
وقال هؤلاء الناس الذين بنوا الكثير من المواقع التي،
"نحن لسنا بحاجة إلى إعادة هذا في كل مرة نبني موقع على شبكة الانترنت."
"لماذا لا يمكننا مجرد تقديم الحزمة التي تفعل كل هذه الأشياء بالنسبة لك
في كل مرة كنت ترغب في بناء موقع على شبكة الانترنت؟ "
وحتى عندما كنت جعل موقع على شبكة الانترنت الجديدة،
عليك التركيز فقط على ما هو بالضبط هذا الموقع خاص عنه.
لا تحتاج لتكرار كل التكوين المختلفة
والفصل بين الرموز ورمز إعادة كتابة
أن يكون لديك كثير من الأحيان إلى القيام به عندما كنت صنع المواقع.
والفكرة هي أن إطارا يسمح لك لكتابة التعليمات البرمجية ذات المستوى العالي
دون الحاجة إلى القلق بشأن التفاصيل ذات المستوى الأدنى.
ثمة تفصيل المستوى الأدنى قد يكون شيء من هذا القبيل
التعامل مع تنظيف البيانات إدخال المستخدم.
هذا شيء يجب أن لا تحتاج حقا ما يدعو للقلق.
يجب التركيز على ما هو تخصيص الويب الخاص بك في الواقع شيء.
أنه يقضي على الكثير من التعليمات البرمجية النمطي.
وهو الهندسة المعمارية للمشروع الخاص بك.
>> الأكثر شعبية واحدة سيكون الموديل عرض وحدة تحكم،
الذي أنا بصدد الحديث عنه في الثانية.
والكثير من الأوقات هذه الأطر تجسد مجموعة من الإجراءات،
قواعد، وأفضل الممارسات لتتمكن من استخدامها
ذلك أنه عند اعتماد إطار الشبكة
لديك لكتابة التعليمات البرمجية بطريقة معينة،
وانها عموما متفق عليه مجموعة من المبادئ
من المجتمع التي هي مقبولة عموما أن يكون
وسيلة جيدة لكتابة التعليمات البرمجية.
يجعل التعليمات البرمجية للصيانة أكثر، أكثر قابلية للاستخدام،
هلم جرا وهكذا دواليك.
وأخيرا، والشيء أريد أن أؤكد حول الأطر
مقابل المكتبات هو هذه الفكرة حول انعكاس عن نطاق السيطرة، والشيء هو هذا.
الفرق بين مكتبة والإطار هو أنه مع مكتبة
كنت لا تزال في كتابة البرنامج الرئيسي،
وكنت نوعا من الاحتجاج المكتبة
ويدعو المكتبة أن تفعل شيئا بالنسبة لك.
الفرق بين المكتبة وإطارا
غير أن الإطار بدأ مع السيطرة،
واستدعاء التعليمات البرمجية الخاصة بك،
لذلك يمكن ان يخطر لك أنها - وهذا هو السبب في انه دعا إطارا -
يوفر إطار هذا الإطار والهيكل لالشفرة الخاصة بك،
وكنت في ملء الثقوب،
وهذا سوف تصبح أكثر وضوحا في الثانية
عندما ترى لي أن أبدأ كتابة التعليمات البرمجية في سياق الإطار.
سترى أنني ملء الفجوات،
والإطار هو نوع من السيطرة على كل قطعة تتحرك،
ولدي لوضع القطع في الأماكن الصحيحة.
>> اليوم ونحن في طريقنا للحديث عن Kohana،
التي هي واحدة من العديد من الأطر PHP.
هناك أطر على شبكة الإنترنت، وهناك منها تقريبا في كل لغة واحدة،
وأنا التقاط Kohana لأن Kohana يمكن القول
والمعترف بها عموما باعتبارها الإطار PHP أسهل لالتقاط.
انها خفيفة الوزن أكثر.
وهناك بعضها الآخر الى ان هناك تأتي مع العديد والعديد من المزيد من الميزات،
لكنها تميل إلى أن تكون أكثر صعوبة لالتقاط.
وأخيرا، يستخدم Kohana بنية MVC.
انها خفيفة الوزن بما فيه الكفاية أن نتمكن من بناء حرفيا مشروع
هنا الحق أمام عينيك، ويمكنك الى حد كبير
اتبع جنبا إلى جنب بسهولة جدا.
>> ما هو بنية MVC؟
انها تقف على طراز عرض وحدة تحكم،
وربما إذا كنت تعتقد حول رمز كنت قد تم كتابة حتى الآن
لبعض psets تطوير الشبكة الخاصة بك
قد تكون قادرا على رؤية بعض من هذا، ولكن عادة عند بدء الكتابة
تطبيق ويب أكثر تعقيدا،
الانقسام بين هذه القطاعات 3 يصبح أكثر وأكثر وضوحا.
أنا وضعت خارج MVC هنا نوع من مثل كومة،
وغالبا ما سوف تسمع الناس يتحدثون عن أكوام في تطوير الشبكة، و
وهذا هو لتوضيح فكرة أن
كل طبقة، كل مكون يحاول حقا أن التواصل فقط
بين 2 المكونات الأخرى.
شخص ما بالوصول إلى موقع الويب الخاص بك كعميل أو مستعرض.
تفاعلها مع البرنامج من خلال رمز العرض.
يتفاعل رمز عرض مع وحدة تحكم.
يتفاعل مع وحدة تحكم النموذج،
ويتفاعل هذا النموذج مع قاعدة بيانات SQL.
وليس هناك في التنقل بين إذا كنت كتابة التعليمات البرمجية بشكل صحيح.
>> ماذا تفعل هذه الأشياء؟
هذا النموذج هو في الأساس قطعة من التعليمات البرمجية التي تتعامل مع البيانات الخاصة بك.
أي شيء الذي يتعامل مع قاعدة البيانات الخاصة بك، مع الكائنات التي قمت بتخزينها،
أو استرجاع هذه الكائنات في قاعدة البيانات،
هذا كل ما التعامل معها من قبل النموذج.
ربما لديك الكائنات في قاعدة البيانات الخاصة بك.
نحن ذاهبون الى خلق نموذج لها علاقة مع وظيفة،
لذلك وظيفة قد يكون لها بعض سمات إليها.
قد يكون لديك وظائف حول تخزين تلك الوظائف أو استرجاع المشاركات
أو تصفية المشاركات وهلم جرا وهكذا دواليك،
وهذا كل شيء وهذا ما رمز التعامل معها من قبل النموذج.
وحدة تحكم هو نوع من منطق التطبيق،
والكثير من أشياء مختلفة يمكن أن تذهب في منطق التطبيق.
إذا كنت تتحدث إلى API مختلفة،
التي قد تكون حيث كنت تتعامل مع منطق التطبيق.
إذا كنت تحاول أن يكون لجلب البيانات من نماذج مختلفة متعددة
ويجب أن الجمع بينهما في بعض الطريق، والتي غالبا ما يمكن معالجتها بواسطة وحدة تحكم.
على سبيل المثال، في الفيسبوك، إذا كنت صديق شخص ما،
ثم ربما هذا الفعل من إنشاء تلك العلاقة
ويمكن أن يتم بواسطة وحدة تحكم.
>> وأخيرا، فإن الرأي هو رمز الذي تم توليد ما تراه في الواقع.
هناك الكثير من الأوقات أعتقد في psets CS50
أنها لا تشجع كنت حقا الرجال لفصل هذه الأشياء 3.
عليك ربما يكون هذا، ملف طويل كبيرة حيث في الجزء العلوي
قمت بإجراء بعض الاستعلام SQL وربما القيام ببعض المعالجة
على البيانات التي تم استردادها من قاعدة البيانات،
ثم لديك كل ما تبذلونه من HTML في الجزء السفلي.
وكنت قد تجد أنه عند إنشاء المزيد والمزيد من الصفحات
ان كنت ستكون لدينا بعض التكرار رمز، وأيضا،
الشيء هو الملف الخاص بك يحصل كبيرة حقا وطويلة
ويصبح غير عملي لإدارة.
السبب في ذلك هو MVC يعتبر جيدا
هو لعدد من الأسباب.
أول شيء هو ما يسمى الفصل بين المخاوف
وهو فكرة أنه عندما يكون لديك -
مثالي 1 قطعة من التعليمات البرمجية يجب أن تفعل الشيء 1 ونفعل ذلك بشكل جيد حقا،
ويجب أن لا تجمع بين قطعة من التعليمات البرمجية التي تفعل أشياء متباينة.
على سبيل المثال، عرض رمز ورمز النموذج،
لم يكن لديهم حقا أن تكون ذات صلة.
أنها لا يجب أن تكون في نفس الملفات، وذلك عندما كنت تستطيع، وفصل منها
لذلك فمن السهل للمحافظة عليه.
>> والشيء الآخر هو إعادة استخدام التعليمات البرمجية.
قد تجد نفسك في كتابة استعلام SQL نفس أو القيام
استفسارات المماثلة التي يمكن أن تستخرج في 1 وظيفة،
وهذه هي الفكرة وراء نماذج وحدات التحكم،
وجود لها في وظيفة منفصلة التي يمكن إعادة استخدامها في أماكن مختلفة في المشروع.
وأخيرا، وهذا مرتبط تجفيف التعليمات البرمجية الخاصة بك،
أو عدم تكرار نفسك، لا تكرر نفسك.
هذا هو مفهومة جدا في التنمية.
كلما كنت تستطيع، وأنت لا تريد أن تكرر نفسك، لأنك إذا تكرر نفسك،
انها أكثر من ذلك بكثير مكلفة للمحافظة عليه.
إذا كنت ترغب في تغيير شيء 1، لديك لتغييره في كل مكان،
والذي يؤدي إلى الخلل، وانها رهيبة.
>> حسنا.
أي أسئلة حتى الآن حول Kohana على الإطلاق؟
عظيم.
الآن ونحن في طريقنا ليغوص في الدورة الترميز الحية،
ونأمل أن كل شيء على ما يرام.
وانا ذاهب لبناء الأساس هذا الموقع
على واحدة من بلدي خدمة المناطق النائية، وبهذه الطريقة يمكنك أيضا الرجال
انظر موقع والوصول إلى شبكة الإنترنت،
وكذلك البيئة الأفضل مكون من بلدي الجهاز البعيد،
لأنه بدلا من تشغيل لينكس OS X.
نحن حرفيا سوف تبدأ.
KohanaFramework.org.
انا ذاهب الى تحميل الكود من الموقع.
أنا ذاهب لنسخ عنوان الرابط،
تذهب لخدمة بلدي، تحميل البرنامج،
وانا ذاهب لاستخراجها.
>> [طالب] ما هو أكبر يمكنك جعل النص؟
[براندون ليو] هل هذا أفضل؟
[طالب] هل هذا قابل للتحقيق؟ >> [براندون ليو] نعم، هذا شيء طيب.
أنا تحميل ملف مضغوط وذلك في محلول دليل يسمى Kohana،
ونحن في طريقنا لإعادة تسمية هذا CS50-Kohana،
ودعونا نذهب فيها.
رهيبة.
هنا تشاهد مجموعة من الملفات المختلفة.
معظم يمكنك تجاهل - نحن لسنا ستذهب من خلال ملف واحد كل هذا هنا
بسبب ضيق الوقت لدينا،
ولكن بصفة عامة عند تثبيت Kohana، فإن أول شيء تفعله
وتذهب إلى الدليل،
وعليك أن تفعل في الأساس بعض الاختبارات البيئة وغيرها
للتأكد من تعيين بشكل صحيح البيئة لتشغيل Kohana
وتأكد من أن كل شيء على ما يرام.
يمكنك ان ترى معظم الأشياء مرت، ولكن عموما تشغيل دائما في هذه المشكلة 1
حيث يشكو من أن بعض الدليل غير قابل للكتابة،
وذلك لأن بعض الأذونات.
أنا لا أعرف كم تعلمت يا رفاق حول أذونات الملف في 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 بعد، ولكن في الوقت الراهن،
يمكنك التفكير في الطبقات على أنها مجرد مجموعة من الوظائف،
وسيلة لتجميع وظائف معا.
هذا هو حقا كل ما تحتاج إلى معرفته.
>> الآن إذا نظرنا إلى بنية المجلد لدينا،
داخل مجلد التطبيق هناك مجلد آخر يسمى الطبقات،
وتسمى المجلدات الأخرى المراقب المالي والنموذجي.
اذا نظرتم داخل مجلد المراقب المالي،
ونحن نرى أن هناك ملف يسمى أهلا،
ويمكنك أن ترى هنا هي فئة دعا المراقب أهلا،
وهناك وظيفة تسمى مؤشر العمل،
وما يفعله هو أنه يضع الجسم من ردكم على مرحبا العالم.
هذا هو المكان الذي يتم كتابة التعليمات البرمجية.
السؤال الآخر هو، حسنا، أنا لم أذهب ل
كذا وكذا وكذا و/ ترحيب / مؤشر.
كيف أنا في نهاية المطاف هنا؟
حسنا، هذا ببساطة لأن
هنا في الجزء السفلي من ملف التمهيد لدينا
حيث وضعنا لدينا طرق
يمكنك أن ترى أن وضعوا بعض الافتراضات بالنسبة لك.
وحدة تحكم الافتراضي هو موضع ترحيب. الإجراء الافتراضي هو مؤشر.
لهذا السبب عندما نضع شيئا في وجود ذهب تلقائيا إلى وحدة تحكم أهلا
ومؤشر العمل.
>> كل شيء معنى حتى الآن؟
الآن، يمكنك أن تفعل أكثر من مجرد الذهاب إلى وحدة تحكم
وإجراءات محددة.
يمكنك أيضا تمرير في المعلمات إلى وحدة تحكم.
فقط كمثال،
انا ذاهب لإضافة إجراء آخر إلى وحدة التحكم هذه لتظهر لك.
دعونا نسمي هذا الإجراء Echo، لأنه ذاهب لاقول لكم كل ما تعطيه،
وحتى وأنا في الأساس ذاهب الى انتزاع
معلمة أن يحدث ليتم إرسالها عبر لي لبرنامج التوجيه،
وكما ترون هنا،
هذا الخط هنا، يمكنك أن ترى أن
وهذا يعني في الأساس أن يكون لديك وحدة تحكم، وكان لديك /،
وكان لديك عمل، وكان لديك آخر /،
والتي ستكون المعلمات، ولأن لدينا هذا الرقم اسم
بين قوسين زاوية، وهذا يعني أننا تسمية هذا معرف المعلمة.
في وقت لاحق في التعليمات البرمجية تحكم بلدي إذا أريد لانتزاع عقد من تلك المعلمة،
يمكنني استخدام رمز كتبت، والعثور على المعلمة اسمه معرف.
وهذا ما فعلته هنا، وانا ذاهب الى العودة وأقول،
"قلت" ذلك.
وحتى الآن إذا ذهبت إلى موقعنا،
أذهب إلى cs50-kohana/welcome/echo/Helloooo--
أوه، هذا صحيح.
هناك 1 خطوة تركت خارجا.
هذا هو جزء من فكرة الترميز الحية.
هنا >> 1 الشيء. دعونا نرى.
لذلك عادة بشكل افتراضي مع الكثير من هذه التطبيقات على شبكة الإنترنت
لديك لتضمين هذا الشيء index.php في URL الخاص بك،
لأن الفكرة هي index.php نوع من نقطة الدخول
التطبيق الخاص بك، ولكن بطبيعة الحال،
وهذا نوع من مزعج لديهم.
كنت لا تريد أن يكون index.php تظهر في URL الخاص بك،
والى حد كبير كل إطار على شبكة الإنترنت من خارج منطقة الجزاء
لديه هذه المشكلة index.php،
وحتى يكون لديك لاتخاذ بعض التدابير لتكون قادرة على إزالة ذلك.
وحتى في هذه الحالة،
ما نحن بصدد القيام به هو أننا ذاهبون إلى استخدام ملف يسمى. هتكس،
وهذا هو الشيء الذي هو محددة لخادم الويب Apache،
وأنها يمكن أن تفعل أشياء مثل إعادة كتابة عناوين المواقع
وإعادة توجيه عناوين المواقع وهلم جرا وهكذا دواليك،
وKohana جميلة بما يكفي لتوفير قالب ملف htaccess التي يمكننا استخدامها.
>> كما ترون، هناك ملف يسمى هناك example.htaccess،
ونحن في طريقنا للنسخ التي ل. هتكس.
أنا ذاهب لفتح هذا وتحريره،
وأساسا فإنه لا حفنة من الاشياء المختلفة.
خط المفتاح الذي قد ترغب في النظر في الحق هو هنا.
والفكرة هي أن هذا يضع قاعدة تقول،
"حسنا، كل ما كنت اكتب في، prepend index.php لذلك."
يمكنك أن ترى ذلك.
و. * تقف على أي شيء، أي شيء يطابق،
ثم الجزء الثاني هو index.php / $ 0،
و$ 0 يشير إلى ما كان يقابل من قبل.
فهل هذا يعقل؟
ولكن الشيء الرئيسي حقا أريد تغيير هو تغيير هذه القاعدة إعادة كتابة،
والذي هو قاعدة URL.
انها نوع من يفترض حيث كنت تعمل من.
انا ذاهب لإضافة CS50 Kohana إلى ذلك،
وبهذه الطريقة الآن إذا كنت إزالة index.php،
ينبغي لها أن تعمل، وانا ذاهب لإضافة بعض الأرقام
لتظهر لك أن فعلت في الواقع العمل.
يبدو جيدا.
>> أي أسئلة حتى الآن؟
[طالب] كيف تعرف ذلك لجعل 123؟
غير أن حجة؟
بالضبط. يمكنك التفكير في الأمر تماما مثل حجة.
ولكن شيء غريب، رغم ذلك، هو أن الطريقة Kohana يفعل ذلك
وأنها لا تفعل ذلك بالضبط مثل حجة.
لديك للاستيلاء عليها من هذا القبيل.
لديك للاستيلاء على وجوه الطلب وطلب المعلمة وهذا ما يسمى ID،
وأن معرف اسم يأتي من أن ملف التمهيد
التي عرضتها في وقت سابق، وكان اسم معرف في تلك أقواس زاوية،
وهذه هي الطريقة التي كنت انتزاع تلك المعلمات.
رهيبة.
أي أسئلة أخرى؟
كما قلت، وأجهزة التحكم، والتعامل مع منطق التطبيق،
ولهذا المثال 1 حيث يمكنك رؤية ذلك -
أنها أساسية جدا، لكنه ما زال منطق التطبيق،
فكرة الاستيلاء على المعلمة وإنشاء سلسلة جديدة
الذي يقول: "قلت بلاه"، ومن ثم البصق أن يعود لك.
وعموما ما عليك فعله هو لك إنشاء وحدات تحكم مختلفة.
يمكنك إنشاء وحدات تحكم منفصلة لأجزاء مختلفة من موقع الويب الخاص بك.
>> اليوم ونحن في طريقنا لجعل موقع على شبكة الانترنت بسيطة جدا،
وانها ستكون بلوق أساسية جدا.
ونحن في طريقنا لجعل وحدة تحكم جديدة لمجرد وظيفة في بلوق.
ولكن بعد ذلك إذا كان لي أن أضيف أيضا تعليقات إلى بلوق وظيفة،
ثم أود أن ربما تريد أن تجعل من وحدة تحكم جديدة لتلك التعليقات.
إذا كنت أريد أن أضيف المستخدمين، وأود أن ربما إضافة وحدة تحكم جديدة لهؤلاء المستخدمين،
وبشكل عام، والفكرة هي أنه كلما كان لديك نموذج جديد،
كائن البيانات الجديدة التي كنت تتعامل معها،
لديك وحدة تحكم واحدة لهذا الكائن البيانات.
اليوم ونحن في طريقنا فقط للعمل مع كائن البيانات 1،
والتي ستكون وظيفة،
وأيضا يمكن أن تفكر في الأشياء البيانات كما الموافق الجداول.
عموما يتوافق كل جدول إلى 1 نوع الكائن البيانات،
وبالتالي فإن جدول آخر سوف يكون 1 نموذج آخر،
والتي سيكون لها 1 تحكم آخر في المقابل الى ان،
والشيء نفسه بالنسبة لتعليق، نفس الشيء بالنسبة للمستخدمين، وهلم جرا وهكذا دواليك.
وهذا كقاعدة عامة من الإبهام.
هناك ستكون حالات خاصة حيث قد تختلف عن ذلك،
ولكن 90٪ من الوقت وهذا ما كنت تريد الذهاب الى ما تقوم به،
وسأريكم هذا ما نحن ذاهبون الى ما تقوم به اليوم.
1 أكثر مفهوم قبل أن يغوص مرة أخرى إلى رمز،
هذه الفكرة من كائن تعيين العلائقية.
>> يا رفاق قد فعلت بالفعل pset تطوير الشبكة،
وكنت قد رأيت أن إجراء استعلام SQL،
وأيا كان فإنه يعود إلى أنك الصفوف.
تحصل هذه الصفوف، وكنت فهرستها من قبل بعض الاسم،
اسم العمود والجدول،
وهذه هي الطريقة التي كنت تعمل معها،
ويمكن أن تكون مرهقة بعض الشيء.
ولكن علاوة على ذلك، إذا كان لديك علاقات داخل قاعدة البيانات الخاصة بك،
مثل على سبيل المثال إذا كان لدي تعليقات والمشاركات،
ثم ربما أريد للاستيلاء على آخر الأم لتعليق.
إذا كنت تستخدم فقط في الصفوف SQL، ثم كل ما يمكن أن تحصل عليه هو معرف
وظيفة الأم وليس آخر الفعلية نفسها.
ولكن عندما نقوم الترميز، ما نريد هو في الواقع للاستيلاء على الواقع
الوالد إضافة نفسها في بعض الأحيان.
ما يفعل كائن رسم الخرائط العلائقية و
يستغرق نتائج استعلام قاعدة بيانات
ويضعه في الأشياء بالنسبة لك، والتي هي أجمل بكثير للعمل مع
من صفائف عادي والصفوف.
>> على سبيل المثال، والآن عندما يكون لدي تعليق ربما،
وأريد أن انتزاع آخر الأم،
وأنا لا أعلق ربما السهم آخر،
بعد ذلك سوف تعطيني الواقع الكائن آخر
المقابلة لآخر الفعلي الأم، وليس فقط بعض ID،
الذي أود أن يكون على خلاف ذلك لاستخدام وجعل الاستعلام SQL أخرى للاستيلاء على آخر،
وهو مرهق وغير ضروري.
وعلاوة على ذلك، عن طريق تعيين كل هذه البيانات في الصفوف الكائنات،
يمكنك أيضا إرفاق المزيد من الوظائف إلى الكائنات،
ذلك على سبيل المثال، تحدثت عن كيف الطبقات هي أساسا تجمعات من الوظائف.
يمكنك التفكير في الأمر من هذا القبيل.
على سبيل المثال، ربما لدي هذا الكائن آخر،
وربما أود أن يكون نوعا من وظيفة مرفقة به
أن يقول لي كان في الأساس أن سجلت في الآونة الأخيرة؟
وكان أن سجلت خلال الأسبوع الماضي، صحيحة أو خاطئة؟
وهذا هو وظيفة أستطيع أن نعلق على هذا الكائن،
وانها مريحة حقا أن يكون ذلك في نفس المكان،
وهناك مجموعة كبيرة من الوظائف المختلفة التي يمكن أن تخلق
لهذه الكائنات، وأنه من الجيد حقا أن تكون قادرا على إرفاقه إلى فئة،
إلى كائن، في حين إذا كان لديك فقط الصفوف قادمة من قاعدة البيانات الخاصة بك،
ثم لا يمكن أن نعلق حقا أي وظيفة لذلك.
انها حرفيا البيانات فقط.
أي أسئلة حول ذلك على الإطلاق؟
ORMs هي تطوير الشبكة شائعة جدا،
وهناك الكثير من أنواع مختلفة من ORMs،
وKohana ديه مكتب إدارة السجلات الخاصة بها.
أنها أساسية جدا، ولكن عليك الحصول على طعم ما يبدو.
>> دعونا خلق نموذج لبلوق وظيفة لدينا،
وأول شيء يتعين علينا القيام به هو الواضح لإنشاء جدول الفعلية
ضمن قاعدة البيانات الخاصة بنا لتخزين البيانات في الواقع لدينا لتلك الوظائف.
أول شيء أنا بصدد القيام به هو الذهاب الى بريس.
هل الرجال تستخدم بريس من قبل؟
حسنا، رهيبة، لذلك يا رفاق نعرف ما هي،
وانا ذاهب لإنشاء جدول جديد يسمى Kohana المشاركات،
وانها سوف تكون بسيطة حقا.
سآخذ لتسجيل الدخول تكبير الخريطة.
كل ما كنت تنوي القيام به اليوم هو أن يكون مؤلف والجسم،
فقط يبقيه بسيط.
أنا ذاهب لخلق هذا الجدول،
والآن لدينا فقط الجدول يمثل مراكزنا
مع 2 المجالات لكاتبنا وجسمنا.
الشيء الآخر وانا ذاهب الى القيام به الآن هو
تكوين تطبيق الويب الخاص بي لذلك يعرف كيفية الاتصال إلى قاعدة البيانات،
وهذا، مرة أخرى، هو الشيء الذي عليك أن تفعل مع جميع تطبيقات الويب.
عليك أن أقول ذلك اسم المستخدم وكلمة المرور
واسم قاعدة البيانات وهلم جرا وهكذا دواليك
لمعرفة كيفية الاتصال فعليا إلى قاعدة البيانات الخاصة بك.
وفي Kohana >>، لدينا ما يسمى وحدة قاعدة البيانات،
وفي المجلد التكوين لدينا هذا مجلد يسمى قاعدة البيانات،
وكما ترون، هناك مجموعة من الإعدادات لديك لتعيين هنا
ليقولوا ذلك ما هو اسم المستخدم وكلمة المرور
لقاعدة البيانات حتى أتمكن من الاتصال فعلا لذلك.
ومنذ أن كنت لا تريد أن تعرف يا رفاق الواقع
اسم المستخدم وكلمة المرور لقاعدة البيانات الخاصة بي،
لدي ملف حيث كنت بالفعل تعيين كل شيء، وانا ذاهب لنسخ ولصق أكثر من ذلك.
رهيبة.
بخير. أعتقد أن كل التكوين يجب أن أفعل،
ولكن دعونا نرى.
سنستمر في العمل في ذلك، وإذا تعطل شيء ما،
ثم سنقوم بإصلاحه.
الآن ما أنا بصدد القيام به هو أنا ذاهب لإنشاء وحدة تحكم جديدة.
أو في الواقع، آسف.
أولا لا بد لي من خلق نموذج جديد.
أنا خلق نموذج جديد يسمى التدوينة،
وما نحن بصدد القيام به هو أننا ذاهبون إلى نسميها الطبقة Model_Post.
الحصول على بعض على تسليط الضوء على تركيب،
وحتى عندما أقول، "يمتد ORM،" هذا هو الأساس
بعض وجوه المنحى البرمجة أكثر من ذلك،
والتي للأسف لم يتعلموا يا رفاق في CS50 بعد،
ولكن من السهل جدا لالتقاط.
انه يعطيني كل هذه الوظيفة الإضافية التي تأتي في حزمة ORM هذا،
وحتى أحصل على حفنة من وظائف اضافية وغيرها مجانا،
التي سترى قليلا من في الثانية.
الآن >> في الواقع كل ما عليك القيام به هو خلق هذه الفئة.
أنا لا تحتاج حتى لجعل أي وظيفة أو أي شيء،
ولكن لقد خلق فئة التي تمثل الجدول،
ولأن لقد امتدت هذه الفئة ORM،
أنا الحصول على حفنة من الأشياء مجانا، حتى الآن لم يكن لديك لوضع أي شيء أكثر حتى.
والآن ما أنا بصدد القيام به هو أنا ذاهب لإنشاء وحدة تحكم جديدة،
الذي أنا ذاهب لتسمية blog.php،
وانا ذاهب لنسخ أكثر من وحدة تحكم أهلا
لذلك أنا لم يكن لديك إلى إعادة كتابة بعض الاشياء،
والآن لا بد لي من إعادة تسمية هذا.
الآن ما أنا ذاهب الى القيام به لاختبار للتأكد من كل شيء يعمل بها،
أنا ذاهب للاستيلاء على أول وظيفة من قاعدة البيانات الخاصة بي
وطباعة نص آخر على الشاشة.
للقيام بذلك ما انا ذاهب الى القيام به أولا وأنا ذاهب لإنقاذ المشاركات
إلى متغير ما نحن ذاهبون للقيام بذلك هي -
في Kohana ما عليك القيام به هو الاستيلاء على كائن آخر
انها نوع من مرهقة، ولكن عليك أن تفعل هذا الشيء يسمى ORM :: المصنع،
ثم قمت بتمرير في اسم النموذج الذي تريد،
وتقوم بإرجاع كائن ORM الذي يمثل ذلك النموذج.
وبعد ذلك، كما قلت، عندما نتقدم الكائن ORM،
نحصل على جميع هذه الطرق مجانا، وذلك على سبيل المثال،
نحصل على هذه الوظيفة جديدة تسمى "تجد كل شيء،"
الذي تلقائيا بإرجاع كل واحد آخر في قاعدة البيانات،
وهو مناسب جدا.
والآن >> في الجسم أنا ذاهب إلى العودة
أول وظيفة والعودة جسمها.
وبطبيعة الحال، ولست بحاجة لخلق آخر،
لذلك دعونا إدراج وظيفة جديدة.
أنا أقول، "براندون، يا أول وظيفة للغاية."
رهيبة.
والآن ونحن في طريقنا للذهاب إلى بلوق
وإذا كان كل يعمل بشكل جيد - أوه، هذا هو بعض الشيء الآخر إذن ملف البكم مرة أخرى.
عقد في 1 ثانية. انها نوع من السخف.
هناك نذهب. بخير.
أنا ثابت أن المشكلة إذن.
انها تحاول خلق بعض الملفات وبعض السجل،
والأذونات، ومرة ​​أخرى، لم تحدد بشكل صحيح، لذلك أنا جعلت من
لذلك كانت تلك الملفات قابلة للكتابة وقابل للتنفيذ
لذلك يمكن تسجيل الواقع إلى الأشياء.
الآن انها إعطائي القول استثناء آخر، "الطبقة ORM لم يتم العثور على"
وهذا لأنني نسيت خطوة أخرى.
فهذا أمر سيئ جدا.
في ملف مجلد التمهيد، هناك هذه الوحدات هنا،
والتي يمكنك اختيار تمكين أو تعطيل.
هذه هي مجموعة من السمات المختلفة التي يمكنك اختيار استخدام
ضمن Kohana، الذي هو نوع من لطيفة.
>> على سبيل المثال، لديهم وحدة التوثيق
والتي يمكنك استخدامها لمصادقة المستخدمين.
لديهم وحدة التخزين المؤقت إذا كنت ترغب في تنفيذ
نوعا من التخزين المؤقت الخلفي نهاية لجعل عمل التطبيق بشكل أسرع وغيرها.
نحن بحاجة لتمكين قاعدة البيانات وحدة مكتب إدارة السجلات،
لأن كما قلت، نحن باستخدام قاعدة البيانات، من الواضح،
ونحن بحاجة أيضا إلى تمكين الوحدة النمطية ORM،
لأننا نرغب في الحصول على وظائف إضافية، التي هي لطيفة لديهم.
كل ما عليك القيام به هو حرر تلك الخطوط 2،
والآن إذا كنت تحديث، أنه أعطاني خطأ آخر.
تقول، "الفئة Model_Post غير موجود."
الآن هذه مشكلة جيدة لديهم.
دعونا نرى.
جعله العامة.
رقم يصمد.
أوه، يا عزيزي.
أنا لا أعرف لماذا انها ليست قادرة على العثور على ذلك.
هذا غريب حقا.
لدي هذه الفئة هنا.
اعتقد انني قد تضطر الى - اه.
أنا غبية جدا. لقد نسيت أن إضافة علامة PHP.
هذا هو السبب.
الآن لا بد لي من التراجع عن هذا التغيير 1 أنا فقط فعلت.
حسنا >>. هناك نذهب.
كان ذلك سخيفا حقا. لم يكن لدي علامة PHP الافتتاح.
ولكن كما ترون، الآن انها تعمل بشكل صحيح، أليس كذلك؟
لدينا آخر 1.
ونحن انتزع أول وظيفة، والآن نحن طباعتها جسمها.
عظيم. رائعة.
أي أسئلة حتى الآن؟
كلا؟ أي أسئلة؟
حسنا، لذلك أنشأنا مجرد نموذج آخر، أساسية جدا،
ونحن في طريقنا لإضافة بعض الوظائف في وقت لاحق.
ويمكننا أن نضيف التصديقات والتصفية.
التصديقات هي واحدة من الأشياء
أن الأطر يحل لك حقا، وبشكل جيد،
وأنا لا أعتقد أن كان لديك الرجال للقيام بذلك لpset CS50 الخاص بك،
لكن اذا كنت تفعل وتطوير الشبكة لمشروع النهائي الخاص بك،
كنت على الأرجح تريد الذهاب الى القيام ببعض النوع من التحقق من صحة،
مثل عدم وجود أسماء المستخدمين فارغة،
ربما وجود كلمة على الأقل مع بعض طول، وأشياء من هذا القبيل.
وانها مرهقة حقا لتنفيذ هذه الأمور من قبل أنفسنا،
والى حد كبير كل إطار واحد على شبكة الإنترنت يفعل ذلك بالنسبة لك
ويسمح لك أن تفعل ذلك بطريقة نظيفة جدا.
وهذا النموذج هو المكان الذي يعبرون عموما تلك قواعد التحقق من الصحة،
لأنه التحقق من صحة ما إذا كان النموذج هو صحيح أم لا.
>> ولكن الآن، ونحن في طريقنا لوضع ذلك حتى وقت لاحق،
والآن ونحن في طريقنا للعمل على جزء آخر،
ونحن في طريقنا إلى محاولة لجعل طريقة عرض جديدة
يسرد كافة الوظائف.
الخطوات المتبعة في اتخاذ إجراءات جديدة لإدراج جميع الوظائف
هو الاستيلاء على قائمة بجميع الوظائف
ومن ثم تقديم قائمة بجميع الوظائف من خلال طريقة عرض.
الحق هنا، لحسن الحظ ما يكفي، ونحن بالفعل أمسك كل المشاركات
باستخدام هذا السطر الأول، وتجد كل وظيفة،
والآن ما نحن بصدد القيام به حتى الآن
لقد تم وضع مباشرة الجسم للاستجابة
عن طريق تمرير السلسلة، ولكن الآن أريد أن استخدام طريقة عرض،
والفرق بين الرأي والقيام فقط هذا
وبهدف أستطيع أن يكون لطيفا، قالب HTML كبيرة،
وما يمكنني فعله هو تمرير ذلك بعض المتغيرات
ومن ثم فقد رأي ملء القالب به تلقائيا
باستخدام هذه المتغيرات.
ما سأفعل هو أنني سوف إنشاء طريقة عرض جديدة،
وسوف تسمية شيء مثل عرض "بلوق / مؤشر"
وانا ذاهب الى ربط هذا الأساس - أوه، ما أنا أكتب؟
ذهني هو في مكان آخر.
أنا ذاهب لربط المشاركات متغير إلى طريقة العرض،
ذلك أن الطريقة التي عرض لها الوصول إلى هذا المتغير آخر.
وهكذا >> الان انا بحاجة لخلق وجهة النظر هذه،
حتى هنا لدينا هذا مجلد يسمى "المشاهدات"
وأول، وانا ذاهب لإنشاء مجلد جديد في إطار ذلك دعا "المدونة".
هذا هو لطيف. بهذه الطريقة يمكننا الحصول على التسلسل الهرمي لطيفة لآرائنا.
ثم أنا ذاهب لخلق ملف آخر في هناك يسمى "index.php".
رهيبة.
في الواقع، دعونا يكون لهم سواء هنا.
جعل ملف الرأي هو الأرجح أبسط جزء من كل هذا،
وهذه هي الأشياء ربما كنت بالفعل على دراية.
ونحن في طريقنا للقيام بشيء بسيط حقا،
بدء قائلا: "قائمة بلدي من بلوق وظائف."
ثم يمكننا أن نذهب من خلال،
ويمكننا أن يكرر من خلال المشاركات صفيف،
الاستيلاء على كل وظيفة واحدة وتقول شيئا مثل -
ربما إضافة سطر
ومن ثم طباعة المؤلف والجسم.
أن يكون له معنى حتى الآن؟
ودعونا نرى ما اذا كان يعمل.
لم يحدث شيء.
وأتساءل لماذا.
أوه، فاتني 1 الخطوة. سخيفة جدا مني.
أنا خلقت وجهة نظر، ولكن لم يتم تعيين طريقة العرض كما الاستجابة،
ولذلك عليك أن تفعل أكثر شيء 1.
ما عليك القيام به "هذا الجسم استجابة" وتعيينها لتكون طريقة العرض.
هناك نذهب.
لدينا عنوان لدينا، ومن ثم لدينا آخر،
وفقط لركلات، دعونا إدراج وظيفة أخرى
حتى يمكننا أن نرى قائمة.
وإدراج هذه الوظائف 2،
والآن إذا كنت بتحديث الصفحة،
ونحن نرى كل هذه المشاركات هنا.
>> هل هذا يعقل حتى الآن؟
نعم، سؤال؟ أوه، حسنا.
كما ترون، لقد كان قادرا على فصل كل من هذه الرموز
إلى أقسام مختلفة، ومن ثم يمكنك ان ترى انها الأكثر واضحة مع رمز الرأي.
هذا الملف الذي يمثل هنا وجهة نظر،
أنه يهتم فقط تمثيل البيانات، وعرض البيانات.
يحصل مرت عليه نوعا من البيانات، وكل ما يفعله هو مجرد عرض لك.
في جميع أجزاء أخرى من التعليمات البرمجية الخاصة بك، فإنك لا داعي للقلق حول أي من ذلك،
وبالمثل، لا يملك مدونة وجهة نظركم ما يدعو للقلق حول أي شيء
كيفية الوصول إلى قاعدة البيانات وهلم جرا وهكذا دواليك،
وهو أمر جيد حقا، ويجعل التعليمات البرمجية الخاصة بك أكثر من ذلك بكثير للصيانة.
كما قلت، وجهات النظر، وانهم ديناميكية في ذلك
انها 1 ملف، ولكن من شأنه أن يولد وجهات نظر مختلفة
بناء على المتغيرات التي يمر فعلا في،
وعلاوة على ذلك، هناك الكثير من وظائف المساعد مختلفة
التي يمكنك استخدامها لمساعدتك على كتابة التعليمات البرمجية بشكل أسرع،
والتي سوف تظهر لك في ثانية واحدة.
نعم.
>> [طالب] لذا $ 0 وحدة تحكم، أليس كذلك؟
هذا الشيء الثاني.
السؤال هو و$ 0 وحدة تحكم؟
$ 0 هو متغير أنا خلقت هنا.
أنا خلقت القول الأول. أنا تعيينه لبعض متغير.
ثم مررت عليه في هذه الوظيفة، تعيينه الجسم للاستجابة.
فهل هذا يعقل؟
[طالب] لذلك هو رأي :: المصنع، وليس عرض مثل فئة
أو مكتبة (غير مسموع) وظيفة المصنع؟
السؤال هو حول دالة الشخصي :: المصنع،
وأساسا هذا هو بعض وجوه المنحى البرمجة أكثر أساسا.
الرأي هو رأي فئة، ولها طريقة تسمى "مصنع"
وهذا هو وسيلة للاستيلاء على الكائن الذي هو المسمى "بلوق / مؤشر."
وهذا بعض أكثر وجوه المنحى البرمجة الاشياء
أنني لن أذهب إلى هنا كثيرا.
الآن من الواضح، ونحن نريد لخلق وظائف جديدة،
لكننا لا نريد أن يكون القيام بذلك من خلال قاعدة بيانات،
لذلك نحن ذاهبون الى خلق عمل جديدة لخلق وظيفة جديدة،
وهناك الكثير من الاشياء يتعين علينا القيام به.
>> أول شيء نحن في طريقنا للقيام - دعونا معالجة هذه الأشياء واحدا تلو الآخر.
أول شيء سنقوم به هو أننا قد حصلت لإنشاء نموذج
لإدراج وظيفة جديدة،
ولكن انا ذاهب أيضا إلى إضافة إجراء جديد،
ذلك إضافة إجراء جديد هو سهلة مثلما
إضافة وظيفة جديدة مع جهاز تحكم،
والآن انا ذاهب الى القيام بشيء أساسية جدا،
مجرد الاستيلاء وجهة النظر هذه وبعد ذلك، مجرد عرض لانها لكم.
ثم الآن أنا ذاهب لإنشاء ملف عرض جديدة،
وانا ذاهب لبدء كتابة بعض الاشياء.
ما هو لطيف حول Kohana هو أنها توفر الكثير من وظائف المساعد مختلفة
بالنسبة لك لكتابة التعليمات البرمجية عرض أكثر سهولة،
و1 من هذه الوظائف مساعد أو وحدات المساعد
وحول أشكال الكتابة.
لكتابة الأشكال، وأنا لم يكن لديك حقا أن الكتابة مباشرة أي HTML نفسي.
وقد كتبت يا رفاق أشكال HTML.
كنت أعرف كيف يمكن أن يكون حقا، ومؤلمة ومرهقة حقا لكتابة النماذج.
انها ليست متعة، لذلك لحسن الحظ،
يمكن أن نكتب في الأساس نموذج باستخدام لKohana
تشكيل دالات مساعد للقيام بذلك بالنسبة لنا.
ونحن في طريقنا ليكون أساسا لحقول كل شيء واحد لدينا،
حتى واحد للمؤلفين واحدة للهيئات.
ونحن في طريقنا لديك التسمية، ونحن في طريقنا لديك مدخلا.
>> ثم أخيرا، ونحن في طريقنا لديك التقديم.
وكما ترون، وهذا هو أنظف بكثير لكتابة
من كل ما HTML فوضوي، والذي هو نوع من لطيفة.
منحت، وهناك أطر الويب الأخرى التي لديها حتى أنه أنظف من ذلك،
ولكن على الأقل هذا أفضل من كتابة HTML نفسك.
رهيبة، لذلك هذا هو ما تراه.
وهذا النوع من الفوضى،
لذلك أنا ذاهب لإضافة خط فاصل هناك
لجعل هذا تبدو أجمل قليلا.
حسنا، بالطبع، فإنه لا تزال تبدو سيئة حقا، ولكننا نركز فقط
على وظيفة في الوقت الراهن وليس على الجماليات.
لا وقت للقيام بكل شيء.
وكما ترون، والآن لدينا نموذج السوبر الأساسية،
الذي هو نوع من لطيفة.
هذا الرمز أود أن أقول أنظف من محاولة لكتابة HTML تشكيل نفسك،
بحيث لطيف.
ما هي الخطوة التالية؟
الآن نحن بحاجة إلى فعل الأشياء مع العمل.
عادة عند الكتابة أشكال HTML،
عليك أن يقولوا ذلك حيث انها سوف تقدم النموذج ل.
بشكل افتراضي في معظم الأطر على شبكة الإنترنت،
تقدمه إلى نفس عنوان URL المحدد، وبالتالي فإن الشيء هو،
إذا قمت بإرسال طلب الحصول على / بلوق / جديدة،
فإنه يجب أن يعرض لك شكل،
ولكن إذا قمت بإرسال طلب آخر ل/ بلوق / جديد مع البيانات،
ذلك أن تحاول في الواقع لإنقاذ هذا المنصب
وتفعل شيئا معها.
>> ما نحن بصدد القيام به هو
أساسا كل ما عليك القيام به للتحقق ما اذا كان طلب آخر أو طلب الحصول على
للتحقق ما هي المتغيرات آخر يمكنك تعيين.
وإذا تم تعيين متغير آخر، ثم نحن ذاهبون لمحاولة خلق وظيفة جديدة.
مرة أخرى، ونحن نفعل هذا فقط،
والذي يخلق وظيفة جديدة، ونحن في طريقنا إلى حرفيا
تعيين حقولها من هذا القبيل،
ثم ونحن في طريقنا لحفظه.
ثم أنا ذاهب إلى إعادة توجيه
إلى صفحة الفهرس حتى يتمكنوا من رؤية لدينا قائمة من المشاركات مرة أخرى.
دعونا نحاول ذلك.
أنا أقول، "براندون"
و من ثم النقر على آخر، وإذا سارت الامور بشكل جيد،
كما ترون، فإنه توجيه لي أن صفحة الفهرس،
وإذا كنت التمرير إلى أسفل، لدينا آخر المدرج حديثا.
ياي!
نعم، سؤال.
>> [طالب] ماذا لو كنت قد دخلت نفس الشيء بالضبط
التى شاركت بها؟
أنها لا تحقق للتأكد من أنك لم تتكرر
نفس الطلب؟
يكون الافتراضي، لا، لأن افتراضيا -
آسف، والسؤال هو إذا قمت بإدخال البيانات في نفس الدقيقة في شكل
ويقدم ذلك، فإنه سوف يسمح لك لإدراج كائن مكررة،
وتكرار دخول، أساسا؟
الحق الآن، نعم، وسوف تسمح لك أن تفعل ذلك،
لأنه في قواعد البيانات انها صالحة تماما لصفوف مكررة تماما،
ولكن إذا كان هذا هو مصدر قلق، ثم يمكنك إضافة التصديقات، على سبيل المثال،
للتأكد من أنه إذا كان هذا هو بالضبط نفس شيء موجود بالفعل،
ثم يقول أنه كائن غير صالحة،
وبعد ذلك يمكنك حتى تحديد رسالة الخطأ الخاصة بك
ويقول: "غير صحيح لأن هذا موجود بالفعل" أو شيء من هذا القبيل.
ولكن في هذه الحالة، وأنا يمكن أن مجرد خلق شيء مكررة.
الآن دعونا نحاول وإضافة بعض التصديقات.
المشكلة مع هذا الحق الآن هو أن
أنا حرفيا يمكن أن يقدم آخر فارغ تماما.
استطيع ان اضغط على هذا الزر في الوقت الراهن، وهناك نذهب.
لا يمكنك حقا رؤية ذلك، ولكن هذا الخط اضافية هنا
يشير إلى أن أنا حرفيا ديك وظيفة جديدة.
انها مجرد كاتب فارغة والجسم فارغة،
ونحن لا نريد للسماح للناس للقيام بذلك.
هذا هو المكان الذي يأتي التحقق من صحة فيه.
>> أستطيع أن أذهب إلى كائن نموذج بلدي،
والآن يمكنني أن أضيف وظيفة جديدة التي تحدد
ما قواعد التحقق من صحة وأود أن أضيف إلى هذا النموذج
للتأكد من أنه صالح أو لتحديد ما الذي يعنيه أن تكون مشاركة صالحة؟
وأريد أن أقول انها صالحة فقط آخر إذا كان كل من المؤلف والجسم
ليست فارغة، وهذا هو كيف نفعل ذلك في Kohana.
يمكنك إنشاء وظيفة جديدة تسمى "القواعد"
ومن ثم يمكنك العودة في الأساس مجموعة النقابي
الذي يحدد قواعد التحقق من الصحة لهذا الكائن.
ونحن في طريقنا للعودة للمجموعة، ثم ما نحن بصدد القيام به هو
ويقول "المؤلف"، فإنه يذهب إلى صفيف،
الذي يذهب إلى مجموعة أخرى تسمى "ليس فارغا".
ثم انا ذاهب الى القول "الجسم".
حسنا، والجملة من أجل هذا وهيكل لهذا
قد تبدو قليلا مرهقة ومعقدة بعض الشيء.
إذا كنت تقرأ وثائق، انها جميلة واضحة لمعرفة،
ولكن أساسا هذا هو ما تحتاج إلى القيام به لتحديد
بعض قواعد التحقق من الصحة، وهناك الكثير من قواعد مختلفة
أن Kohana سوف أعطيك مجانا، كما يمكنك إضافة قواعد ليقول
يجب أن تكون على الأقل هذا الطول.
وربما لديها أن تكون رقمية. وربما لديها لتكون رقمية ألفا.
ربما كان يجب أن يكون هذا في معظم طول، وهلم جرا وهكذا دواليك.
هناك الكثير من القواعد المختلفة التي توفر Kohana بالنسبة لك،
ويمكنك الذهاب على موقعه على الانترنت، أن ننظر في الوثائق،
ويمكنك أن ترى كل الأشياء المختلفة التي يمكنك القيام به.
>> ولكن هذا هو كل ما عليك القيام به،
والآن دعونا نرى ما سيحدث
إذا أقدم وظيفة فارغة.
ما الذي سيحدث؟ أوه، لا، أنا الحصول على خطأ.
أحصل على استثناء التحقق من الصحة.
حسنا، انها جيدة.
أنه قال لي إن نموذج بلدي غير صالح،
ولكن لا أريد لعرضه استثناء
للمستخدمين بلدي عندما يحاولون تقديم شيء غير صالحة، أليس كذلك؟
أريد أن أعطي لهم نوعا من رسالة الخطأ ودا
عندما يكون هناك شيء يذهب على نحو خاطئ.
ما نحن بصدد القيام به هو أننا ذاهبون ل
التفاف كل شيء في حلقة محاولة الصيد.
في الواقع، وأعتقد أن هذا هو أيضا شيء كنت لم يتعلموا بعد
في CS50، لأن C، لغة البرمجة C،
لايوجد استثناءات، ولكن كل واحد تقريبا لغة أخرى
لديه استثناءات، لذلك حقا، حقا لفترة وجيزة،
استثناء شيء أن قطعة من التعليمات البرمجية يمكن
بطرح استثناء عندما يكون هناك شيء يذهب على نحو خاطئ،
ولكن بعد ذلك ربما بعض قطعة أخرى من التعليمات البرمجية على مستوى اعلى
يمكن التقاط هذا الاستثناء وتفعل شيئا معها.
>> على سبيل المثال، في هذه الحالة،
قطعة من التعليمات البرمجية التي يحاول انقاذ نموذجا،
ذلك بالتحقق من صحة النموذج، وإذا كان يقول: "حسنا، هذا النموذج غير صالح"
انها تسير لرمي استثناء، وهذا هو نوع من تعادل
في C قد ترجع -1 أو شيء من هذا القبيل.
ثم بالنسبة لي، هذه الوظيفة، قانون بلدي
على مستوى أعلى، يمكن أن أحاول اللحاق وهذا الاستثناء
ويقول في الأساس، "حسنا، إذا كنت التقاط استثناء، ما أنا ذاهب الى القيام به؟"
أو أنا لا يمكن أن يختار لالتقاط هذا الاستثناء والسماح لشخص على مستوى اعلى
تصفية الاستثناء، أو إذا كان لا أحد أدرك أنه،
ثم تعطل البرنامج بأكمله ويقول:
"شيء ذهب على نحو خاطئ، وأنا لا يمكن التعامل معها."
>> ولكن ما نقوم به هو التفاف لك قطعة من التعليمات البرمجية في كتلة المحاولة،
ومن ثم يمكنك أيضا إضافة ما يسمى كتلة الصيد،
وهو نوع من التعليمات البرمجية التي ستحاول اللحاق والاستثناءات التي قد تحدث.
وحتى لو كنت التقاط هذا الاستثناء خاص
أو إبطال استثناء، ثم ما أنا بصدد القيام به هو
انا ذاهب الى تعيين الأخطاء - أعتقد أن هذا كيف أفعل ذلك -
وانا ذاهب لضبط الأخطاء لبعض وجوه.
ثم ما أنا بصدد القيام به هو إذا كان يضرب هذا الاستثناء،
انها ليست الذهاب الى توجيه، وإذا كان لا توجيه،
انها سوف تخرج من إذا بلوق
وضرب هذا بلوق / الجديد الذي تريد أريد القيام به.
إذا كان هناك خطأ، ثم أريد أن أعود إلى النموذج
وعرض تلك الأخطاء.
الآن ما أريد القيام به هو أريد لتمرير أخطاء في تلك
إلى طريقة العرض.
حسنا، أعتقد أن لدينا وجهة نظر هنا،
وأساسا أريد أن عرض تلك الأخطاء إذا كانت موجودة.
قبل أن تكتب HTML لذلك، انا ذاهب بسرعة حقا
تظهر لك ما بنية هذه الأخطاء تبدو مثل متغير،
وهذا هو ممارسة جيدة بشكل عام.
هناك الكثير من الأوقات كنت الحصول على شيء يعود من بعض الطرق،
بعض من وظيفة في إطار الشبكة،
وكنت لا تعرف ما يشبه المتغير،
لذلك كنت لا تعرف كيفية العمل معها.
انا ذاهب الى استخدام أسلوب الطباعة r لطباعة أساسا بها.
>> وكما ترون، فإنه يقول لي انها مجموعة الزميلة،
وكان لديك مفتاح، والمؤلف، ونقاط لهذه السلسلة،
يجب أن لا يكون المؤلف فارغة، ومفتاح آخر، والجسم،
نقطة إلى أخرى سلسلة، والجسم لا يجب أن يكون فارغا.
أنا مثل، حسنا، بارد.
بعد ذلك يمكنني أن يكرر من خلال مجموعة وطباعة كل رسالة واحدة.
انها في الاساس مثل مجموعة النقابي مع مجموعة من الرسائل.
ما أنا بصدد القيام به هو "إذا أخطاء"
وانا ذاهب لإنشاء قائمة غير مرتبة،
وانا ذاهب الى تكرار خلال كافة الأخطاء.
وهذا، والآن انا ذاهب الى محاولة تقديم هذا مرة أخرى،
ودعونا نرى ما يمكننا الحصول عليها.
الآن نحصل على هذه القائمة لطيفة من الأخطاء،
وهذا لا يزال قبيحة جدا، ولكن من الواضح أن هذا يمكن أن يتم تنسيق لتبدو لطيفة،
ولكن الفكرة الأساسية هي فقط في بضعة أسطر من التعليمات البرمجية،
كنا قادرين على التحقق من صحة نموذجنا،
تأكد من أن بعض المجالات لم تكن فارغة،
وإذا حدث خطأ ما، ثم العودة نوعا من رسالة الخطأ
وبعد ذلك يمكن أن يقدم إلى المستخدم.
يمكنك أيضا تخصيص التحقق من الصحة
حتى أنه يمكن أن يكون في الواقع رسالة خطأ
وهذا هو أكثر تحديدا إلى التطبيق الخاص بك أو شيء من هذا القبيل.
كل ما هو للتخصيص بشكل عام.
>> للأسف، نحن نفاد الوقت،
لذلك أنا ذاهب الى ان تقطع الدورة الترميز العيش هنا.
هناك حفنة من الميزات الأخرى التي أريد أن تظهر لك
في هذا المثال.
على سبيل المثال، يمكنك إضافة قوالب لموقع الويب الخاص بك،
ولذلك ربما يكون هناك نوع من التعليمات البرمجية HTML التي تريد تطبيق
على كل صفحة واحدة في موقعك، وبدلا من أن يلصق
في كل ملف عرض واحد لديك، والتي من الواضح سيكون ممارسة سيئة،
يمكنك تحديد هذه القوالب في الأساس،
ثم في وحدة التحكم الخاصة بك ويقول: "حسنا، أنا باستخدام هذا القالب."
"هل كل وجهات نظري استخدام هذا القالب."
وآخر شيء واحد أريد أن تظهر لك كذلك
أننا لم يكن لديك الوقت لهو البرمجة عبر الموقع،
وأساسا أعتقد أن ربما ينظر يا رفاق في CS50 -
أعتقد ديفيد مالان ربما تحدث عن كيف يمكن حقن عادة
شفرة جافا سكريبت في - هل تحدثنا عن ذلك؟
ربما؟ ربما لا؟
>> ولكن في الكثير من الأحيان يمكنك حقن الخبيثة شفرة جافا سكريبت
في قاعدة بيانات لشخص ما، وإذا كانوا لا فرار من ذلك بشكل صحيح،
ثم عندما يقدم تلك البيانات إلى المستخدم،
ثم أنه قد يعمل نوعا من العشوائية شفرة جافا سكريبت كنت لا تريد أن يحدث،
وكنت ذاهبا لشرح كيفية كنت تفعل ذلك في غضون Kohana.
انها في الواقع حقا، من السهل حقا.
أنا يمكن أن تفعل ذلك الآن في 2 ثانية حرفيا.
كل ما عليك القيام به هو أساسا التفاف هذه الأشياء
في هذا الشيء يسمى كيانات HTML.
والتي من شأنها أن الهروب كافة الأحرف تلقائيا بشكل صحيح
وتأكد من أنك لا تحصل على هذه المشكلة.
[طالب] كنت قد كتبت أول اختبار بشكل غير صحيح.
[براندون ليو] أوه، عفوا.
حسنا >>، هذا كل ما كان لي أن أشاطركم لهذا اليوم.
هذه الشرائح ستكون نشرها، ولكن هذه هي عموما
الموارد فقط يجب عليك حقا بحاجة للبدء مع Kohana.
يمكنك الذهاب إلى الموقع. لديهم دليل المستخدم، ولديهم أيضا API المستكشف.
يمكننا استكشاف جميع وظائف مختلفة وظائف المساعد لديهم بالنسبة لك.
عموما لديهم ما يكفي من المعلومات على الموقع الإلكتروني
التي يمكنك استخدامها لبدء والحصول على الذهاب مع Kohana.
ليست هناك أن العديد من الدروس، كما أعتقد، لKohana، خارج
ما لديهم على الموقع هنا، لذلك هو على الارجح وهذا أفضل رهان.
ولكن إذا كنت تريد أن تذهب مع إطار شبكة الإنترنت
وكنت لا تريد أن يكون لالتقاط لغة جديدة،
وإذا كنت تريد شيئا التي هي خفيفة نسبيا وله منحنى تعليمي سهل،
أود أن أقترح بالتأكيد Kohana.
هذا هو على الارجح أفضل والطرح لذلك.
الطريف، رغم ذلك، هو إذا كنا باستخدام روبي على القضبان،
أننا يمكن أن يكون لديك نسخ ما فعلناه فقط
وربما أكثر في أقل من 3 دقائق.
ليس مزحة، ولكن تعلم روبي على القضبان يأخذ وقتا أطول
من الذي سيستغرقه لتعلم Kohana.
انها في الاساس اختيارك على ما كنت ترغب في اختيار للتعلم،
ولكن إذا كنت ترغب في الحصول على وتشغيلها بسرعة،
Kohana هو بالتأكيد خيارا جيدا جدا.
>> أي أسئلة الماضي قبل أن ينتهي؟ نعم.
[طالب] كيف ندمج أن
في إطار مثل CSS كنت تستخدم عندما كنت تعليمات؟
والسؤال هو كيف يمكننا أن دمج ذلك مع الإطار المغلق؟
ما نقوم به هو ربما أننا ربما ستشمل
مجلد جديد حيث كنا تفريغ جميع الملفات CSS لدينا،
ثم كنا أيضا إضافة قالب جديد.
في قالب كنا تشمل تلك الملفات CSS
للتأكد من انهم المشار إليه على كل صفحة واحدة،
وبعد ذلك عندما كنت في الواقع يتم كتابة HTML،
أنت فقط إضافة فئات المناسبة وغيرها،
وعلى سبيل المثال، عندما كنت تستخدم شيئا مثل النموذج
وظيفة مساعد، يمكنك إضافة المزيد من المعلمات بعد ذلك
لتحديد ما الطبقات التي تريد أن تعلق على أشياء مختلفة
حتى يتمكنوا من أسلوب بشكل صحيح، وهذا هو أساسا كيف لك أن تذهب.
>> أي أسئلة أخرى؟
رهيبة.
شكرا لك على وقتك، وأشكركم على حضوركم.
لم أكن أريد أن أضيف كثيرا آخر،
ولكن الشيء 1 سريع حقا هو أننا لم يكن لديك وصلة
إلى النموذج.
غبية حقا.
دعونا نضيف - في الواقع في طريقة العرض، بلوق، مؤشر،
دعونا بسرعة حقا إضافة ارتباط الذي يذهب إلى صفحة جديدة،
الصفحة حيث يمكننا إدراج وظيفة جديدة.
ونحن في طريقنا للقيام بذلك.
ما هو لطيف وهناك هذه المجموعة كاملة من وظائف مساعد HTML
التي تفعل أشياء مختلفة بالنسبة لك، لذلك رأيت بالفعل الكيانات
تعمل هنا، ولكن لديهم أيضا وظيفة تسمى "مرساة"
حيث يمكنك كتابة في بلوق / جديدة
ويقول: "وظيفة جديدة بلوق."
وذلك من شأنه أن يخلق هذا الارتباط بالنسبة لك،
وهذا يبدو تافها حقا أن تفعل، ولكن هذا هو لطيف،
لنفترض أنك تتحرك من موقع الويب الخاص بك 1 من النطاقات إلى آخر.
وإذا كنت كتبت للتو عناوين URL نفسك،
ثم سيكون لديك لتغيير كل عناوين المواقع.
أو ربما كنت نقله من 1 فرعي إلى مجلد فرعي آخر.
قد تضطر إلى تغيير كل تلك عناوين نفسك،
وهذا ليس متعة.
يمكنك استخدام هذه المرساة هنا،
ويمكنك تغيير المجال أو البادئة فرعي
في ملف التكوين مرة واحدة،
وبعد ذلك سيتم تطبيق ذلك في كل مكان، وهذا هو، مرة أخرى،
مثال عظيم على عدم تكرار نفسك، والتجفيف كود الخاص بها.
أينما كنت تكرر نفسك، ومحاولة استخراج في نوع من ملف التكوين
أو إلى وظيفة مختلفة، وأنها تعامل مع ذلك لك.
وكان >> الأخيرة جدا الشيء الذي أردت أن تظهر لك
لنفترض أننا نعود في هذا المنصب، وكنت قد تتكون بعض مقال طويل حقا،
لكني نسيت أن تشمل البلاغ بلدي.
الآن عند النقر فوق "إرسال بوست"
لقد فقدت للتو كل شيء.
لا! المحزن حقا.
فكيف تتعاملون مع ذلك؟
هذا هو ما نقوم به.
ما نقوم به هو هنا لهذه الوظائف المدخلات ومساحة النص،
إذا كان لنا أن تشمل المعلمة الثانية، ثم قيمة تلك المعلمة الثانية
سيكون مجال ما يجري ليتم ملؤها في البداية مع.
ما يمكننا القيام به هو في تحكم بلوق لدينا،
نحن يمكن ربط متغير آخر.
نسميها "القيم" ربما.
ويمر في مجموعة آخر، حرفيا.
وهذا يعني أنه إذا فشل التحقق من الصحة،
تمرير لي مجموعة آخر أن قدمت من الطلب الأخير،
وبهذه الطريقة يمكنني استخدام القيم من تقريري الأخير تقديم
لإعادة ملء الحقول.
الآن أستطيع أن أفعل شيئا مثل القيم المؤلف
وتقدر الجسم، وبهذه الطريقة الآن إذا كنت تفعل بعض الاشياء عشوائي
وانقر على زر "إرسال بوست"، فإنه يبقى هناك.
ولكن نحن ذاهبون لتشغيل إلى مشكلة أخرى.
أن يعمل، ولكن إذا ذهبت إلى الصفحة مرة الأولى،
انها سوف تحطم الطائرة، وذلك لأن أول مرة
نذهب إلى الصفحة، لم يتم تعريف هذا المتغير آخر حتى الآن.
انها فارغة. فإنه لا وجود لها.
و>> ما نريد قوله هو في حالة وجود هذا المفتاح،
ثم إرجاع قيمة هذه المجموعة،
ولكن إذا لا وجود المفتاح، ثم إرجاع سلسلة فارغة.
هذا هو وظيفة نريد هنا.
نحن نريد للتحقق مما إذا كان المفتاح موجودا قبل محاولة للوصول إلى مجموعة،
ولحسن الحظ بما فيه الكفاية،
Kohana يعطينا أيضا وظيفة مساعد لذلك.
لديهم هذه مجموعة كاملة من وظائف
تحت اسم ARR، قصيرة لمجموعة،
ولديهم 1 وظيفة تسمى "الحصول على"
ويمكنك تمرير في صفيف،
ويمكنك تمرير في اسم المفتاح.
ثم أساسا ما سوف تفعله هو انها ستحاول الحصول على هذا المفتاح،
ولكن إذا لم يكن موجودا هذا المفتاح في مجموعة،
ثم فإنه سيعود فارغا، أو يمكننا أيضا تحديد الافتراضي، في اعتقادي،
التي هي لطيفة.
الآن اذا لم نفعل الشيء نفسه مرة أخرى،
ثم تشاهد الآن يعمل في المرة الاولى،
ومرة أخرى، إذا كان لنا أن اكتب في بعض الاشياء عشوائي
ومحاولة تقديم، ثم يبقى هناك.
>> واعتقد انني يمكن أيضا أن تظهر لك كيفية إضافة قالب بسرعة حقا.
ما يمكننا القيام به أولا هو أننا يمكن أن تضيف طريقة عرض جديدة تسمى "template.php"
ضمن المجلد المشاهدات،
وما أنا بصدد القيام به هو أنا ذاهب لطباعة ما يسمى "المحتوى"
وهو ذاهب الى ان يكون لي المحتوى الرئيسي.
وربما في الجزء السفلي جدا انا ذاهب لإضافة، على سبيل المثال،
حقوق التأليف والنشر.
[سؤال الطالب غير مسموع]
[براندون ليو] ربما هذا هو قالب السوبر الأساسية أريد استخدام.
أريد أن يكون لديك مجلد مع المؤلف على كل صفحة واحدة،
والآن ما أنا ذاهب الى القيام به في غضون تحكم بلدي
الآن بدلا من أن تقول، "تمتد وحدة تحكم"
انا ذاهب الى القول، "يمتد Controller_Template"
والآن بدلا من أن تقول، "استجابة الجسم يساوي هذا الرأي،"
انا ذاهب الى القول، "هذا المحتوى القالب -"
وأعتقد - أقوم بوضع علامة المساواة؟
أنسى. نعم، اعتقد ذلك.
والآن أنا وضعت هذا المتغير المحتويات يساوي الرأي.
أستطيع أن تفعل الشيء نفسه هنا.
والآن إذا كنت تحديث، يمكنك أن ترى الآن يضاف هذا المؤلف هناك،
ومجرد جعل بعض آخر عشوائي،
ثم، مرة أخرى، يجب أن نرى أن المؤلف هو في أسفل جدا من الصفحة.
>> العظمى. هذا كل ما أردت أن أبين يا رفاق.
[تصفيق]
أي أسئلة؟
[CS50.TV]