23-08-2007, 18:22
|
|
|
חבר מתאריך: 21.01.06
הודעות: 813
|
|
צריך עזרה בהבנת קוד בקשר לאובייקטים..
טוב, אז הגעתי לאיזה קטע קוד מהספר וקצת הסתבכתי ולא הבנתי אותו,
הייתי רוצה שתעזרו לי להבין אותו.. (אני לא בא ומבקש שתלמדו אותי php
פשוט לא מפורט על הקוד הזה ולא ממש הבנתי אותו)
אני מקווה שיהיה לכם סבלנות לעזור לי כי זה חשוב וזה דיי ארוך..
אז ככה, הנה הקוד מהספר:
קוד PHP:
class Table { var $table_array = array(); var $headers = array(); var $cols; function Table ($headers) { $this-> headers = $headers; $this->cols = count ($headers); } function AddRow($row) { if ( count ($row) != $this->cols) return false; array_push ($this-> table_array , $row ); return true; } function addRowAssocArray ( $row_assoc ) { $row = array( ); foreach ($this-> headers as $header) { if ( ! isset ($row_assoc[$header] )) $row_assoc[$header] = " "; $row[] = $row_assoc[$header]; } array_push ($this-> table_array , $row ); return true; } function output() { echo "<pre>"; foreach ($this-> headers as $header) echo "<b>$header</b>"; echo "\n"; foreach ($this->table_array as $y) { foreach ($y as $excell ) echo "$excell"; echo "\n"; } echo "</pre>"; } } $test = new table ( array ("a" , "b" , "c") ); $test-> addRow ( array (1,2,3) ); $test-> addRow ( array (4,5,6) ); $test-> addRowAssocArray ( array (b=>0 , a=>6 , c=> 3 ) ); $test->output ();
וזה הפלט:
אני קודם אגיד מה הבנתי ומה התקשתי..
בהתחלה יוצרים מחלקה בשם table ויוצרים בה שלוש מאפיינים, ששתיים מהם הם מערכים.
לאחר מכן יוצרים פונקציית קונסטרקטור שמכילה משתנה, ובפונקציה המשתנה שלה ($headers) משווים למאפיין של המחלקה headers שהוא מערך..
ואת המאפיין cols הופכים לתוצאה של מספר הרכיבים במערך $headers .
עכשיו פה קצת הסתבכתי.. יוצרים פונקציה נוספת ובה משתנה $row, ובהצהרת if אומרים שאם
מספר הרכיבים ב$row לא שווה לתוצאה של מספר הרכיבים במערך $headers, הביטוי מחזיר
false . והשאלה - מדוע צריך לבדוק אם מספר הרכיבים של row לא שווה למספר
הרכיבים של $headers וחוץ מזה, $row בכלל ריק אז זה מחזיר false בכל מקרה..
לאחר מכן עושים array push ובו מוסיפים את המאפיין table_array ל
row. מדוע? וגם למה צריך שהביטוי יחזיר true ?
לאחר מכן יוצרים עוד פונקציה וגם בה משתנה.. בפונקציה הזאת מגדירים את $row כמערך,
ושוב משווים את המאפיין headers ל$header בלולאת foreach ובה בודקים האם
$row_assoc[$header] מכיל ערך. והשאלה- מה הקשר בין המשתנה שיש בפונקציה
ל$header? ולמה צריך לבדוק שזה מכיל ערך?
כמו שאני הבנתי, הופכים את row_assoc למערך רב מימדי שמכיל את המערך $header
אבל, בשורה הבאה עושים כך $row_assoc[$header] = " "; ולא הבנתי מה פירוש ה = " ";
ומה הוא משנה.
בשורה לאחר מכן מוסיפים מערך לתוך המערך row שמכיל מערך..
לאחר מכן חוזרות על עצמם השורות
array_push ($this-> table_array , $row );
return true;
מדוע?
ושוב, לאחר מכן מוספת פונקציה, ובה שוב משווים את headers as $header
בלולאת foreach ובה מדפיסים את header ולאחר מכן
משווים את table_array as $y
ואז $y as $excell
ומדפיסים את $excell
ולבסוף, יוצרים אובייקט למחלקה table ומוסיפים לו מעריך,
ואז פעמיים מגיעים לשיטה addrow ומוסיפים מעריך..
ואז מגיעים לשיטה addRowAssocArray ומוסיפים מעריך משוייך..
ו... מפעילים את הפונקציה output .
אממ זה היה ארוךךךךךך אני מקווה שמשהו יעזור לי להבין את העקרון שמאחורי הקוד
הזה ולענות לי על השאלות כי בחוברת לא היה כתוב כלום
ת-ו-ד-ה -ר-ב-ה מ-ר-א-ש !-!-!-!-!-!
_____________________________________
--- ! Area Close ! ---
|