ערב טוב,אני זוכר את התקופה שאני התחלתי לתכנת בה, לפני בערך קצת יותר מ5 שנים, הייתי די גרוע אז(סתם לידע כללי
), בקיצור לא חשבתי אז על ללמוד תיכנות נכון או יעיל, או כול דבר שקשור באופטימיזציה או נוחות של הקוד, הייתי כותב הכול בצורה פרוצדוראלית (אם אפשר לקרוא לזה ככה, הייתי כותב פונקציה פעם ביובל), בקיצר כול הקוד שלי פשוט היה בלגאן אחד אדיר המון המון מחזור של קוד, שמות משתנים לא ברורים, הזחות? הצחקתם אותי חח אפילו לא ידעתי מה זה, כול הקוד שלי היה כתוב בטבלה אחת ללא TAB אחד אפילו, הייתי נותן לכם דוגמא אפילו לאיך הייתי כותב, אבל עזבו פאדיחה.
בקיצור לאן אני חותר אתם שואלים?
אני חותר בעיקר לרעיון המרכזי של המאמר הזה, שהוא תיכנות נוח,יעיל,מונחה עצמים ללא מחזור של קוד, עם אופציה לשדרוג קל של המערכות שאתם בונים, אופטימיזציה נוחה של רכיבים באתר, גישה נוחה לקוד באתר, סדר במבנה קבצים של האתר, ובהירארכיה של הקבצים באתר, מה בא לפני מה, איך אנחנו ניגשים בכלל לכתוב אתר אינטרנט, ואם אנחנו צריכים לעבוד לפי שרטוט מדוייק או להגדיל ראש רוב הזמן?
בוא נתחיל במונח "תיכנות נוח", מה אומר לנו המונח הזה, כיצד אנחנו יודעים אם אנחנו מתכנתים בצורה נוחה?
קודם כול המפתח לתיכנות בצורה נוחה, זה לעבוד עם עורך שנוח לנו איתו, שכשאנחנו נתקלים בבעיה, הדיבאגר שלו יעזור לנו למצוא אותה בקלות, וכשאנחנו כותבים פונקציה,הערה,משתנה,שם מחלקה.... הוא ייצבע לנו את זה בצורה יפה וברורה, שנוכל להבדיל בין כול דבר במערכת שלנו בקלות, וכשניגש לטפל בשגיאות או לשדרג את הקוד, יהיה לנו הרבה יותר כיף להסתכל על הקוד ולטפל בו.
בואו קודם כול נראה איזה עורכים קיימים היום בשוק, יש לא מעט, אני אמליץ על מה שאני חושב שהוא הכי נוח ואפקטיבי לPHP ולשאר השפות הנלוות אלינו כשאנחנו מתכנתים בPHP.
1.PHP Designer
http://www.al-andalos.com/data/3/12/storm_phpdesigner_small.jpg
כמה מילים על העורך הזה,
זה העורך הראשון שהתחלתי לעבוד איתו ברצינות, ולמען האמת לא מזמן רק סיימתי את העבודה איתו והתקדמתי לZend Studio For Eclipse שעליו אני ארחיב בהמשך כמה שאני יכול, כי אינני מכיר אותו לעומק עדיין.
בקיצור PDesginer מכיל בתוכו בערך כול מה שמתכנת PHP צריך, יש לו דיבאגר מעולה, הוא צובע את הקוד בצורה יפה, יש בו השלמה אוטומאטית לפונקציות מהCore של PHP,הוא תומך בשלל שפות נוספות שבהן גם (Ruby,Perl,Python ועוד....), חוץ מזה הוא תומך גם בCSS בצורה מלאה, עם השלמה אוטומאטית לכול הProperties בCSS.
כנל לגבי HTML תמיכה מצויינת בכול התגיות, והמאפיינים שלהם, ומכיל בתוכו את כול הDOCTYPE לכתיבה ע"פ התקן של XHTML.
חוץ מזה קצת על האופציות בתוכנה עצמה, יש אופציה לעבוד לפי פרוייקטים, לפתוח פרוייקט, להגדיר לו שרת וירטואלי, כמובן לנהל את הקבצים בפרוייקט בצורה נוחה, יש אפשרות לעבודה מרחוק ולהתחבר לFTP ולערוך את הקבצים בשרת עצמו, זה מעולה בפרוייקטים גדולים, שיש את התשתית לפיתוח, ואת התשתית הפעילה באתר, וברגע שמסיימים לפתח משהו מעבירים את זה ישר לשרת עצמו.
באמת עורך מצויין, לפרוייקטים קטנים עד בינוניים מעבר לזה יש עורכים טיפה יותר מקצועיים, שמאפשרים קצת יותר גמישות שאני אנסה להרחיב עליהם בהמשך המאמר.
העורך הבא שאני רוצה לדבר עליו הוא Eclipse,
אקליפס הוא עורך נהדר, הוא חינמי לגמרי, בקוד פתוח, עם קהילה די רחבה שמפתחת אותו לפי מה שהבנתי, העורך הזה הוא שם קצת גדול רק לPHP, כי השימוש בו הוא ממש לא לPHP בלבד, הוא תומך בעוד המון דברים אחרים, בJAVA וJSP ועוד המון המון דברים שאני די חלש בו כדי להרחיב עליהם אבל תוכלו להכנס ל
http://www.eclipse.org/
ולברר עליו קצת יותר, מה שכן אני אגיד עליו שהוא עורך גמיש מאוד מבחינת אפשרויות בו, הכול ניתן לשינוי בו, ועם קצת השקעה אפשר להגיע איתו לדברים מעולים, שוב אם יש לכם זמן להגדיר אותו ולהתאים אותו לצרכים שלכם, הוא לא נופל משום עורך אחר.
אבל יש לי הפתעה בשבילכם
אתם לא צריכים לעשות את זה
http://2tbsp.com/system/files/eclipse_helloworld.png
Zend כן כן כן כן המפתחת של PHP עשתה את זה בשבילכם, ויצרה את Zend Studio For Eclipse, שזה העורך המושלם לPHP, אני עובד איתו כבר בערך שבוע, (עבדתי איתו גם בעבר, אבל שוב לא בצורה מקצועית כמו היום), והוא פשוט מדהים, הדיבאגר שלו זה יצור לא אנושי(דה
), מה שגם הוא מגיע עם תוסף לFIREFOX שמאפשר לכם לדבג את האתר שלכם בדפדפן עצמו, יש גם אופציה לעבוד עם התשתית של Zend Framework בצורה די נוחה ע"פ מה שהבנתי מהעורך עצמו, הניהול פרוייקטים בו הוא מדהים, שוב אליפס, יש לכם שליטה על הכול, שוב אני אין לי ממש מה להוסיף, תצטרכו להוריד ולבדוק בעצמכם.
יש כמובן עוד עורכים נחמדים אחרים שאני לא אפרט עליהם אבל אם אתם רוצים אלה השמות ממה שאני זוכר
Notepad++
PHPEdit
Textpad
זהו לא זוכר עוד 
הנושא הבא שאני אדבר עליו הוא תיכנות יעיל,
תיכנות יעיל הוא לא בהכרח כתיבה של פונקציות בצורה יעילה, שימוש ברקורסיה מתי שצריך, עבודה במינימום סיבוכיות זמן....
כמובן שזה חלק משמעותי ביותר הנ"ל, אבל זה חלק בסיסי מאוד בתיכנות יעיל, מעבר לזה שאתם כותבים בצורה יעילה, השאלה בסופו של דבר היא האם האתר שלכם בנוי בצורה כזאת שאם מתכנת זר יגיע ויירצה לשנות משהו הוא יוכל לעשות את זה בקלות?
אני לא מכיר את כולכם פה, אבל אני מניח שאתם לא עובדים לפי תבנית מסויימת(סינגלטון,MVC),ואתם בונים את האתרים שלכם בצורה די פרוצדוראלית (אם בכלל),בקיצור מה שאני בא להגיד שהתיכנות הזה הוא שגוי, הוא לא נכון מהיסוד, ושאני לא אתחיל לדבר על כמה "יעיל" הוא, האינטרקציה בין רכיבים באתר הוא דבר די חשוב, וגם צריך לדעת ליישם את זה בצורה נוחה, גם הגישה הזאת היא לא נכונה, אומנם בהתחלה זה נראה נוח כי לכם זה נוח ועובד, אבל ויש פה אבל גדול זה שזה עובד לא אומר שזה צריך ליהיות ככה, ואני לא אומר לא לגרום למשהו לעבוד ואחרי זה לשפר אותו, להפך קודם שיעבוד אחרי זה השמיים הם הגבול, אני בחיים לא מנסה לכתוב יעיל מלכתחילה כי אני יודע שזה לא אפשרי.
בכו"א אני כאן כדי להמליץ לכם לא כדי להטיף לכם, במידה והלכתם על ההמלצה שלי, אז בסופו של דבר זה לטובתכם וגם לטובת העתיד שלכם, כי בעיה לתקן דברים כאלה בעתיד.
בואו נתחיל עם תבנית הסינגלטון,
תבנית הסינגלטון היא תבנית שנועדה להבטיח שלמות של המערכת/אחדות בין כול הרכיבים, כדי לייצא רכיב אחד פעיל שהוא האתר עצמו בסופו של דבר,
התבנית בנויה בצורה של מופע יחיד של מחלקה,שבמחלקה עצמה בודקים אם קיים כבר מופע של המחלקה, ובמידה אם קיים מופע, אנחנו מחזירים מצביע אליו, במקום ליצור אחד חדש, לכן גם הקונסטרקטור של המחלקה הוא Private והפונקציות הציבוריות במחלקה הן סטטיות, דרך המחלקה אתם טוענים את כול המחלקות של האתר שלכם, ואז נוצר לכם מופע יחיד שמכיל את האובייקטים שלכם, זה דומה כעיקרון לregistry רק שregistry עובד עם MVC הם נלווים אחד לשני.
על MVC אני לא אחפור יותר מדי, אני פשוט אפנה אותכם למקור שאני למדתי ממנו.
בעברית
http://he.wikipedia.org/wiki/Model_View_Controller
באנגלית
http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller
יש עוד המון דברים שהזכרתי למעלה ולא הספקתי לפרט עליהם, נמשיך בפרק הבא שיהיה לי זמן, וריכוז לעשות את זה