הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   דיזיין למערכת MVC- התיעצות (https://hosts.co.il/forums/showthread.php?t=38765)

tnadav 27-01-07 19:38

דיזיין למערכת MVC- התיעצות
 
שלום, אני רוצה לבנות מערכת גדולה, אבל גדולה באמת... אני רוצה שזאת תהיה מערכת MVC ואני עכשיו בשלבי דיזיין.
חילקתי דפים לשני חלקים:
כלי מערכת
מודולים

כלי מערכת זה למשל:
db.php
config.php
וגם דף שמנהל מודלים, זאת אומרת מקבל ב- GET שם של מודל, מוודא אם זה בסדר, ואז מוסיף את המודל, מעטפות מראה, מערכת ניהול...

היה לי קצת קשה להבין, איפה אני משלב את ה- view, model, controller.
חשבתי ככה:
תהייה לי תיקייה בשם modules ובתוכה תיקיות, לכל תיקייה יש שם של המודל, ובתוך התיקייה שיהיו 3 קבצים:
view.php
model.php
controller.php
כשהמודל זה מחלקה עם כל מה שהמודל צריך לעשות, controller זה החלק שמקבל נתונים מה- GET, מבין מה רוצים ממנו, ועושה בהתאם, ככה שבעצם, המודל זה הגרעין, והקונטרולר זה המעטפת, וה- view מוציא את הפלט.

ואז חשבתי לעצמי, המודל לא אמור להיות הדינאמי? זאת אומרת שלכל מודל יהיה רק מחלקה, וככה זה נכון מבחינת תחזוקה, זאת אומרת, הם במיילא נפרדים, אבל ככל שאני עושה פחות לכל מודל, ככה יותר טוב, ואז ניתקלתי בבעיה: איך אני עושה את זה? איך אני מכין קונטרולר שיודע להבין מה רוצים ממנו, אם הוא בכלל נפרד מהמודל (גם במצב הקודם הוא היה נפרד, אבל זה שונה, כי הוא נוצר במיוחד בשביל המודל) ובכלל, ה- view.. מאיפה הוא יודע איך אני רוצה להציג את המידע?

מה שגרם לי לפקפק בזה שהבנתי בכלל מה זה MVC.
אז השאלה שלי היא כזאת: אני בכיוון? מה שתכננתי בסדר? אם לא, איך כן? איך זה עובד?

The Crow 28-01-07 12:44

במקום לבנות הכל מחדש,
אני ממליץ לך לבדוק את זה:
http://www.codeigniter.com/

בהצלחה :)

BlueNosE 28-01-07 12:52

תראה.. באתר שלי כן פתחתי תיקייה לכל ACT, אבל זה רק בגלל שהפעולות והדפים מוגדרים מראש, והשינויים הם לא כמותית (כמות הדפים משתנה לעיתים רחוקות) אלא איכותית (תוכן הדפים משתנה בתדירות גבוהה), אז העדפתי לעשות את זה ככה.

אבל במקרה שלך?
פשוט מאוד, יוצרים CLASS שמטפלת בזה. היא עובדת מול המסד ובודקת קודם כל אם הMODEL קיים. אם כן, היא שולפת את הערך מהמסד (יכול להיות ערך HTML ישיר, או נתיב לקובץ לטעינה דינאמית). עם זה אתה יכול לעשות מה שאתה רוצה.

שים לב, זה רק רעיון!
תוכל להשתמש בו, ותוכל גם לשלוח אותו לעזאזל. עם קצת דימיון תוכל לעשות הרבה מאוד, כי אתה בסך הכל צריך להפעיל קצת אחרת את הראש, לחשוב קצת אחרת.. זה עוזר |Rolleyes|

tnadav 28-01-07 13:45

ציטוט:

נכתב במקור על ידי The Crow (פרסם 413800)
במקום לבנות הכל מחדש,
אני ממליץ לך לבדוק את זה:
http://www.codeigniter.com/

בהצלחה :)

אני לא אוהב להשתמש במערכות מוכנות, אני רוצה לבנות בעצמי, ולצבור ניסיון (חוץ מזה שיהיה נחמד לדעת מה תקעו בקוד היפה שלי :) ).

אצלי תיקייה לכל ACT לא בא בחשבון, המערכת יותר מידי דינאמית...
בסוף לדעתי לכל מודול יהיה מחלקה model, מחלקה controller וקובץ template (פלוס אינקלוד של כל מיני קבצי מערכת...)

RS324 28-01-07 18:12

הכי פשוט...וזה מה שאני בעצם עושה...
יש לי תיקייה INCLUDES ושם יש לי את כל הפונקציות
לדוגמא
functions_users.php
adminfunctions_users.php
ובתוך הטמפלטים אותו רעיון אני עושה PREFIX לטמפלט על השם של המודול
לדוגמא
users_main_page
כשם של קובץ....

יש מודולים שהם בסיסים ולכן לא הייתי קורא להם בכלל ככה שזה בעצם ה CORE של המערכת שלך
מה שמדביק את הכל ביחד.

הכי חשוב זה לעבוד בצורה של קלאסים מסודרים כמו שצריך ואז הכל הולך חלק...

tnadav 28-01-07 18:22

ציטוט:

נכתב במקור על ידי RS324 (פרסם 414011)
הכי פשוט...וזה מה שאני בעצם עושה...
יש לי תיקייה INCLUDES ושם יש לי את כל הפונקציות
לדוגמא
functions_users.php
adminfunctions_users.php
ובתוך הטמפלטים אותו רעיון אני עושה PREFIX לטמפלט על השם של המודול
לדוגמא
users_main_page
כשם של קובץ....

יש מודולים שהם בסיסים ולכן לא הייתי קורא להם בכלל ככה שזה בעצם ה CORE של המערכת שלך
מה שמדביק את הכל ביחד.

הכי חשוב זה לעבוד בצורה של קלאסים מסודרים כמו שצריך ואז הכל הולך חלק...

הגישה שאליה הגעתי שישבתי ועשיתי את הדיזיין הוא: הכל זה מודולים חוץ מ-
db.php
config.php
moudle.php
אפילו הדף הראשי, זה בעצם מודול בשם home, השאלה היא, האם הגישה הזאת נכונה

RS324 28-01-07 18:41

ציטוט:

נכתב במקור על ידי tnadav (פרסם 414018)
הגישה שאליה הגעתי שישבתי ועשיתי את הדיזיין הוא: הכל זה מודולים חוץ מ-
db.php
config.php
moudle.php
אפילו הדף הראשי, זה בעצם מודול בשם home, השאלה היא, האם הגישה הזאת נכונה

חצי נכונה
אתה צריך שיהיה לך פנאל ניהול מובנה שכל המודולים נבנים סביבו
כלומר אתה לא יכול לעשות משהו דינאמי עד אין סוף
חייב להיות חוקים מסויים
יש לי CLASS שלם שמטפל ב ADMINAREA כולל העיצוב שלו והכל
כל המודולים אני בונה סביבו...

אפילו יש לי DEFINES שהם גלובלים במערכת
יש לי קובץ שנקרא INIT.PHP והוא מדביק את כל המערכת - הוא עושה INSTANSE לכל הקלאסים שאני צריך והוא מביא את המערכת למצב עבודה בסיסי.
בנוסף אתה צריך לבנות קלאס שיטפל לך בכל הנושא של היוזרים
והוא גם יהיה מובנה...אבל פה זה מתחלק ל 2... לא בכל מערכת צריך מערכת של יוזרים עם הרשאות
היה לי הרבה לקוחות שמבקשים יוזר אחד לפנאל ניהול וזהו
אז תעשה קלאס עם 2 מצבים . משתמש אחד \ ריבוי משתמשים
כמובן שהוא חייב להכיל בתוכו את כל התעסקות סביב ה SESSIONS הצפת סיסמאות וכל מה שקשור במשתמשים והתחברות.

זה הבסיס...כל מה שמובנה טבלאות הוא יהיה מודול...
ולפה יכולים להיות הרבה דברים שנכנסים
אבל הם נכנסים בהתאמה למערכת שלך
כי בסופו של דבר לא משנה איזה מערכת זאת
תמיד זה יהיה משיכה והכנסה לטבלאות...
אז תיצור לך ממשק שיהיה לך קל ליצור מודולים
(בממשק שלי הגעתי למצב שאני יוצר מודול פשוט תוך 2 וחצי דקות)
וככה תתקדם...

אבל את הבסיס אתה חייב שיהיה לך.

BlueNosE 28-01-07 19:01

ציטוט:

נכתב במקור על ידי RS324 (פרסם 414041)
חצי נכונה
אתה צריך שיהיה לך פנאל ניהול מובנה שכל המודולים נבנים סביבו
כלומר אתה לא יכול לעשות משהו דינאמי עד אין סוף
חייב להיות חוקים מסויים
יש לי CLASS שלם שמטפל ב ADMINAREA כולל העיצוב שלו והכל
כל המודולים אני בונה סביבו...

אפילו יש לי DEFINES שהם גלובלים במערכת
יש לי קובץ שנקרא INIT.PHP והוא מדביק את כל המערכת - הוא עושה INSTANSE לכל הקלאסים שאני צריך והוא מביא את המערכת למצב עבודה בסיסי.
בנוסף אתה צריך לבנות קלאס שיטפל לך בכל הנושא של היוזרים
והוא גם יהיה מובנה...אבל פה זה מתחלק ל 2... לא בכל מערכת צריך מערכת של יוזרים עם הרשאות
היה לי הרבה לקוחות שמבקשים יוזר אחד לפנאל ניהול וזהו
אז תעשה קלאס עם 2 מצבים . משתמש אחד \ ריבוי משתמשים
כמובן שהוא חייב להכיל בתוכו את כל התעסקות סביב ה SESSIONS הצפת סיסמאות וכל מה שקשור במשתמשים והתחברות.

זה הבסיס...כל מה שמובנה טבלאות הוא יהיה מודול...
ולפה יכולים להיות הרבה דברים שנכנסים
אבל הם נכנסים בהתאמה למערכת שלך
כי בסופו של דבר לא משנה איזה מערכת זאת
תמיד זה יהיה משיכה והכנסה לטבלאות...
אז תיצור לך ממשק שיהיה לך קל ליצור מודולים
(בממשק שלי הגעתי למצב שאני יוצר מודול פשוט תוך 2 וחצי דקות)
וככה תתקדם...

אבל את הבסיס אתה חייב שיהיה לך.

מה זאת אומרת מודול?
קוד PHP שרץ כמו דף דינאמי, או קוד HTML שרץ עם IFים למיניהם מוגדרים בעזרת PCRE?

tnadav 28-01-07 19:19

ציטוט:

נכתב במקור על ידי RS324 (פרסם 414041)
חצי נכונה
אתה צריך שיהיה לך פנאל ניהול מובנה שכל המודולים נבנים סביבו
כלומר אתה לא יכול לעשות משהו דינאמי עד אין סוף
חייב להיות חוקים מסויים
יש לי CLASS שלם שמטפל ב ADMINAREA כולל העיצוב שלו והכל
כל המודולים אני בונה סביבו...

אפילו יש לי DEFINES שהם גלובלים במערכת
יש לי קובץ שנקרא INIT.PHP והוא מדביק את כל המערכת - הוא עושה INSTANSE לכל הקלאסים שאני צריך והוא מביא את המערכת למצב עבודה בסיסי.
בנוסף אתה צריך לבנות קלאס שיטפל לך בכל הנושא של היוזרים
והוא גם יהיה מובנה...אבל פה זה מתחלק ל 2... לא בכל מערכת צריך מערכת של יוזרים עם הרשאות
היה לי הרבה לקוחות שמבקשים יוזר אחד לפנאל ניהול וזהו
אז תעשה קלאס עם 2 מצבים . משתמש אחד \ ריבוי משתמשים
כמובן שהוא חייב להכיל בתוכו את כל התעסקות סביב ה SESSIONS הצפת סיסמאות וכל מה שקשור במשתמשים והתחברות.

זה הבסיס...כל מה שמובנה טבלאות הוא יהיה מודול...
ולפה יכולים להיות הרבה דברים שנכנסים
אבל הם נכנסים בהתאמה למערכת שלך
כי בסופו של דבר לא משנה איזה מערכת זאת
תמיד זה יהיה משיכה והכנסה לטבלאות...
אז תיצור לך ממשק שיהיה לך קל ליצור מודולים
(בממשק שלי הגעתי למצב שאני יוצר מודול פשוט תוך 2 וחצי דקות)
וככה תתקדם...

אבל את הבסיס אתה חייב שיהיה לך.

את הפאנל ניהול לא לקחתי בחשבון בתוך הדיזיין, כי במובן מסוים, זה מערכת נפרדת, שיודעת לשים ערכים לטבלת DNA (ככה אני קורא לזה.. ממש מרוצה מהשם8-)) של המערכת.. וזהו..

וגם בדפי מערכת לא שמתי הכל.. יש עוד.. למשל login_check, שבודק ולידאציה.. ואני חושב שדווקא בדיקת הרשאות זה משהו שלא מאנקלדים..אלא שמים את זה כחלק מ- module.php

RS324 28-01-07 19:42

ציטוט:

נכתב במקור על ידי tnadav (פרסם 414084)
את הפאנל ניהול לא לקחתי בחשבון בתוך הדיזיין, כי במובן מסוים, זה מערכת נפרדת, שיודעת לשים ערכים לטבלת DNA (ככה אני קורא לזה.. ממש מרוצה מהשם8-)) של המערכת.. וזהו..

וגם בדפי מערכת לא שמתי הכל.. יש עוד.. למשל login_check, שבודק ולידאציה.. ואני חושב שדווקא בדיקת הרשאות זה משהו שלא מאנקלדים..אלא שמים את זה כחלק מ- module.php

כל אפליקציה שאתה כותב אתה רוצה לכתוב גם את הפנאל ניהול וגם את העיצוב וכל השטויות מחדש ?
אתה מנסה לעשות משהו שהוא קצת יותר מידי גדול ומעצבן
העיצוב (הטבלאות, הקישורים) ישתנה עם המודולים זה ברור
אבל את הבסיס אתה צריך לעשות

אתה מנסה לעשות מודול שיתאים לכל מערכת שהיא בעולם....

זה כבר לא מערכת

אתה מנסה לעשות FRAMEWORK...


כל הזמנים הם GMT +2. הזמן כעת הוא 12:33.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ