ירושה בכתיבת מודולים
שלום,
רציתי לשאול- האם יש דרך לכתוב מודול בצורה שתאפשר ירושה שלו? יש בכלל מאפייני OO בדרופל?
וספציפית יותר- האם יש דרך מובנית לרשת סוג תוכן ולהרחיב אותו? ראיתי את http://drupal.org/project/inherit אבל זה לא מספק.. (גרסת DEV בלבד). הצורך בכך נראה לי ברור.
תודה רבה!!

אין ירושה , אבל יש כל מיני
אין ירושה , אבל יש כל מיני hook_alter
http://drupal.org/node/547518
yakoub abaya
שלום מרים. למרות השם הטוב
שלום מרים.
למרות השם הטוב שיצא לירושה, מדובר באחת הדרכים הגרועות להרחיב תפקוד של מחלקה. למעשה, זה אנטי-אובייקטלי בעליל, הורס את הכימוס (encapsulation) ושובר את ה-OCP.
הדרך הנכונה היא החלה. בדרופל תוכלי לעשות זאת באופן פשוט באמצעות שימוש חוזר באותם שדות עבור מספר סוגי תוכן שיש להם מאפיינים משותפים.
את הרעיון קיבלתי בזמנו מליאור :)
אמיר
| פרקטיקול - בונים לך אתר דרופל | עזרה מידית בקבוצה שלנו בפייסבוק! | שיעורי דרופל דרך האינטרנט
לא מסכים , ירושה זה מנגנון
לא מסכים , ירושה זה מנגנון מצויין וזה הבסיס של תכנות מבוסס אובייקטים ברוב השפות הנפוצות
בנוסף הרבה מודולים כן משתמשים בירושה כמו views ו boxes
בדרופל 7 משתמשים בירושה למודולים של בדיקות ובהגדרת ישויות
מערכות אחרות כמו django ו rails מממשים עקרון module-view-controller , ושיטת המימוש מבוססת מחלקות וירושה
דרופל בעצם ממש רק view ו controller ולא ממש את ה module , לכן מפתח אתרים בדרופל יכול לממש רמת ה module במחלקות וירושה אם ירצה בכך , וזה בדיוק מה שמודול views עושה
אני אישית מאוד אוהב תכנות מבוסס מחלקות , אבל גם אין לי בעיה לתכנת טוב בתכנות פריצודוראלי
yakoub abaya
יעקב אני חולק עליך ואפרט
יעקב אני חולק עליך ואפרט להלן.
ראשית, זה model ולא module. המודל הוא הדאטא ובוודאי רכיב views לא יכול לממש אותו.
הקונטרולר תפקידו לפקד על התצוגות ולסנכרן ביניהן אם צריך. זה בדרך כלל נתון לבעיות ולדעתי גם לא מתאים למערכות ניהול תוכן אלא ליישומים - שולחניים או ווביים - שדורשים אינטראקציה בתצוגה אחת ושתסתנכרן עם תצוגה אחרת. איפה בדיוק אתה צריך את זה באתר מבוסס תוכן? אגב, ג'נגו וריילז הם לא CMS לכן כלל אינן שייכות לדיון.
יעקב, אני מבין את החוזק של ירושה בקיצור הליכים - השתמשתי בזה עשר שנים ולימדתי את זה בקורסים (לא לפני שחילקתי כדורים נגד בחילה). זה נראה קסום בהתחלה ועובד יופי, עד שרואים כמה שזה יוצר תסבוכת מיותרת. אני ארחיב.
ברגע שיוצרים ירושה יוצרים צימוד - coupling - וזה בדיוק ההפך ממה שתכנון נכון של הפרד-ומשול - כימוס - דורש. הדרך הנכונה להשיג את החוזק של שימוש חוזר בקוד היא הכלה ולא ירושה. כמובן, ניתן להוסיף גשרים. כמו כן, יש את האפשרות לעשות את זה באמצעות אינטרפייס בשפות מסוימות. זה גם לא אידאלי אבל עדיף מימוש משותף של אינטרפייס מאשר ירושה.
אמיר
| פרקטיקול - בונים לך אתר דרופל | עזרה מידית בקבוצה שלנו בפייסבוק! | שיעורי דרופל דרך האינטרנט
נכון זה model ולא
נכון זה model ולא module
המודל של views הוא בנית והרצת שאילתות sql , ה"דאטה" של views זה השאילתה וזה מה שנשמר לטבלה views_view ו views_display
המודל של views זה מערכת בניה שמאפשרת מודולים אחרים להרחיב אותה בשביל הטבלאות שהם מגדירים והדרך לעשות את זה בנוסף לשיטת ה hook של דרופל זה גם לכתוב מחלקת handler שיורשת מאחת המחלקות ש views מגדיר או אחרת מגדירה את המתודות ש views דורש
הדוגמה של views גם מראה שאין coupling , כי מודול flag למשל יכול לממש הלוגיקה שלו באופן עצמאי ולבנות טבלאות עם קשרים איך שרוצה בלי שיהיה קשור ל views בכל צורה , אפשר להשתמש ב מודול flag גם בלי שמודול views יהיה מותקן ובעתיד המודול flag יכול לפתח גרסה לדרופל 7 בלי שיהיה תלוי בפיתוח גרסה של views לדרופל 7
אם יופיע מודול חדש שמספק אלטרנתיבה ל views אז flag יוכל להתממשק איתו ואפילו יוותר על views לגמרי
העקרון של הפרד ומשול מתקיים כי views לא צריך להגדיר העצמו איך לבנות שאילתה למודולים אחרים , אלה הם אלה שמספקים את הממימוש הזה בעצמם
כימוס מתקיים כי views לא צריך לדעת על מבנה הטבלאות של flag והלוגיקה שלו וגם flag לא צריך לדעת איך views בונה את השאילתה ומנהל תצוגות בסופו של דבר
אתה לימדתה עשר שנים ירושה , אני קיבלתי 102 ב "תכנות מונחה עצמים"
והשתמשתי במחלקות וירושה במהלך הפרויקטים שלי בהצלחה רבה בלי שום בעיות
השאלה מה מתוכנן לדרופל 8 בהקשר הזה ?
http://www.theexperiencenetwork.com/drupal-8-and-beyond
לסיכום , ,,,, אתה פשוט טועה , טועה בכל מה שכתבתה
וגם אם כל העולם יסכים איתך , מבחינתי אני אישית תמיד מעדיף שימוש במחלקות וירושה ואף פעם לא אשתכנע בדיעות האלה שהצגתה
yakoub abaya
יעקב, hook אינו ירושה אלא
יעקב, hook אינו ירושה אלא מדמה סוג של callback או delegate והוא מצוין - לא שובר את הכימוס ולכן עונה לדרישות OCP.
אולי אתה ואני משתמשים באותו מונח לדברים שונים; אני מתכוון במונח 'ירושה' אך ורק למקרה שמחלקה אחת יורשת מחלקת אחרת - את מבנה הנתונים שלה ואת התפקוד שלה.
נקודות התממשקות הנן חובה בקוד מודולרי. בדרופל בחרו בשיטה של hook הנפלאה. אבל זו לא ירושה.
אמיר
| פרקטיקול - בונים לך אתר דרופל | עזרה מידית בקבוצה שלנו בפייסבוק! | שיעורי דרופל דרך האינטרנט