לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי         אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 08-10-2014, 16:03
  dardevil dardevil אינו מחובר  
 
חבר מתאריך: 12.08.05
הודעות: 883
OOP תקין ב php

שלום.
אני מנסה להבין מה הדרך הנכונה ביותר לסדר את המחלקות וההורשות בphp.
יש לי מחלקה(class) שמנהלת את כל הקריאות לdb - נקרא לה dbClass. היא משתמש באובייקט של mysqli שיצרתי. ומפעילה עליו כל מיני פונקציות.
במקביל אליה יש לי עוד כל מיני מחלקות(class) שמנהלות פונקציות אחרות במערכת.(לדוגמא, משתמשים, הודעות, תגובות וכו' וכו')
בנוסף, יש לי עוד כל מיני אובייקטים כלליים יותר, לדוגמא כל ה site config, או מערכים גלובלים שמשתמשים אותי בכל מיני מקומות.

בגלל שאני לא יכול להוריש שתי מחלקות במקביל, אני מנסה להבין איך אני אוריש למחלקות השונות את המחלקה שמנהלת את הקריאות לdb, ובנוסף, איך המחלקה הזאת תשתמש באובייקט של mysqli.

אפשר לדוגמא להגדיר את האובייקט של mysqli כגלובאלי, ואז להשתמש בו בתוך הפונקציות של dbClass, אבל אז אני אהיה חייב להוריש את המחלקה dbClass בכל המחלקות שלי, וזה מנטרל אותי מלהוריש מחלקות אחרות.
בנוסף, חשבתי לעשות את הפונקציות של המחלקה dbClass כסטאטיות ואז לקרוא להם, הבעיה שזה מצמם את יכולות הOOP שלי.

בקיצור אני די מבולבל, אשמח אם מישהו יעשה לי טיפה סדר בדברים.
(בבקשה לא לתת לי קישורים כלליים למדריכי oop כי אף אחד מהם לא יורד לפרטים האלה)

תודה רבה!
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #8  
ישן 08-10-2014, 17:06
צלמית המשתמש של hellfrost
  hellfrost hellfrost אינו מחובר  
 
חבר מתאריך: 07.12.09
הודעות: 7,072
בתגובה להודעה מספר 1 שנכתבה על ידי dardevil שמתחילה ב "OOP תקין ב php"

טוב... תשובה רצינית...

1. בבקשה:
http://slashnode.com/pdo-for-elegan...atabase-access/
http://php.net/manual/en/book.pdo.php

2. הורשה, זה בשביל אובייקטים שיש להם פונקציונליות משותפת, או מהות משותפת. כעקרון נהוג להמנע משימוש בירושה כשאפשר ולהעדיף שימוש רגיל באובייקטים. פשוט תבנה שכבת DAL ותשתמש בה איפה שאתה צריך...

3. במקומך לא הייתי נוגע ב PHP בכלל, ובוודאי שלא לפרוייקטים חדשים. זאת שפת תכנות לקוייה, ונחותה, עד כדי כך שהיא לא ראוייה להקרא שפת תכנות. אם אתה מחפש משהו טוב ללמוד, אני ממליץ על Ruby או Python .

----
זה אולי אפילו יותר טוב:
http://www.redbeanphp.com/
או זה:
http://www.doctrine-project.org/projects/dbal.html


-===---=-=-=-
אה עוד אחת להמלצות - JavaScript יצא לי בזמן האחרון לעבוד קצת על פרויקט מבוסס Node.js , ולגמרי השתכנעתי שזאת צורה סבבה לגמרי לעבוד. כאילו אם נמנעים מכל השטויות של JS... וזה כנראה קצת פחות מתאים למתחילים ממש....

נערך לאחרונה ע"י hellfrost בתאריך 08-10-2014 בשעה 17:17.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #11  
ישן 08-10-2014, 17:44
  dardevil dardevil אינו מחובר  
 
חבר מתאריך: 12.08.05
הודעות: 883
בתגובה להודעה מספר 1 שנכתבה על ידי dardevil שמתחילה ב "OOP תקין ב php"

טוב, אז קודם נענה על הטחות האשמה כלפי php ואז אעבור לשאלה שלי.
א. node.js זו באמת אופציה ראויה, אבל בשיקול של כמות המחוברים בו זמנית וכובד התהליכים במקרה הזה בחרתי בphp. הפרוייקט שאני בונה דורש תהליכים ארוכים ואין יותר מידי משתמשים שיפנו בו זמנית ולכן אין סיבה לבנות אותו ב node.
את הצ'אט אני בונה בnode ומשלב אותו במערכת.
בכללי עד היום php נתנה לי את כל מה שהייתי צריך ואין לי סיבה לעבור לשפה אחרת.

ב. לגבי השאלה:
עד היום עבדתי עם mysql, ואז באמת ברגע שאתה יוצר חיבור אתה יכול לפנות למתודות של mysql_query ו mysql_feath_assoc בחופשיות בלי שום משתנה.
לאחרונה החלטתי לעבור לעבוד עם mysqli, ושם השימוש בפונקציות query ו assoc וכו' הוא דרך הinstance שאתה יוצא ל mysqli.
ולכן אני חייב להשתמש בו בתוך המחלקה dbClass.
ה dcClass משתמשת אותי לריכוז הפונקציות לdb. לדוגמא:
קוד PHP:
 function insertToDb($tableName,$dbFieldsArr) {
        global 
$dbObj;
        
$result $dbObj->query("INSERT IGNORE INTO {$tableName} (`".implode('`,`',array_keys($dbFieldsArr))."`) VALUES ('".implode('\',\'',array_values($dbFieldsArr))."')");
    } 


שימו לב שהיום אני פשוט מגדיר את האובייקט dbObj(זה האובייקט שמחזיק את ההתחברות ל mysqli) כגלובאלי ואז יכול לגשת אליו.
בנוסף יש לי שם פונקציות select, או real_escape וכו' ולכן אני חייב את הפונקציות האלה בכל המחלקות שאני משתמש בהם.
מה גם, שברגע שאני מחזיק מחלקה שמנהלת את הגישה עם הdb, אני יכול להחליף סוג db בנוחות מדהימה, בלי לעשות שינוי אחד בלוגיקה באתר.

תודה רבה.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #17  
ישן 12-11-2014, 23:51
  fadey fadey אינו מחובר  
 
חבר מתאריך: 15.07.02
הודעות: 1,027
בתגובה להודעה מספר 14 שנכתבה על ידי hellfrost שמתחילה ב "קודם כל, רובי ופייתון מיישמות..."

אני דווקא חושב שקרוב ל-10 שנות נסיון מקנות לי את היכולת לומר שאני אכן יודע מזה תכנות מונחה עצמים.
אבל אם אתה חושש.. זה בסדר מבחינתי.
אי נוכחות של פרימיטיבים לא הופכת את השפה למיישמת "OOP" בצורה מלאה.
OOP היא קצת מעבר לעבודה שכל דבר הוא אובייקט, אולי אינך יודע מהי פולימורפיזם בצורה שלמה?
אולי אינך יודע מהי הכמסה? או העמסה?

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

לכן בהתחשב ביכולותיה, היא בהחלט ראויה להקרא שפת תכנות, איך שאתה מנסה לצייר את PHP היא כן דעתך, ודעתך נמצאת בקרב מיעוט עם שאר ההזויים למיניהם, מה שכמובן הופך את דעתך לכמעט לא רלוונטית בעניין ובטח שלא בשום צורה קרובה להיות עובדה, אובייקטיבית או סובייקטיבית (אגב, מכיוון שעובודות חייבות להיות אמפיריות, אין אפשרות שעובדה תהיה סובייקטיבית.. אולי גם את זה אינך יודע?).
_____________________________________
ציטוט:
Different people use different tools, but its mostly morons who pretend that the problems with PHP actually matter.

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +3. השעה כעת היא 05:56

הדף נוצר ב 0.20 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2019 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר