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

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   תכנות - מדריכים, code snippets (https://hosts.co.il/forums/forumdisplay.php?f=68)
-   -   [מדריך] PHP - למתחיל בOOP. חלק א' וב'. (https://hosts.co.il/forums/showthread.php?t=43115)

reXtea 08-04-07 20:28

[מדריך] PHP - למתחיל בOOP. חלק א' וב'.
 
החלטתי לכתוב סדרת מדריכים בתכנות מונחה אובייקטים בשפת PHP על מנת לקדם מתחילים בשפה ולעזור להם להתפתח.

[*] המדריך נכתב על ידי אמיר פרידמן. אין להעתיק או לפרסם מדריך זה בשום מקום ללא אישור ממני באימייל: INvisioN.net@gmail.com. המדריך נכתב בלשון זכר אך מיועד גם למתוקות שקוראות מדריך זה =]


חלק א'. - מה זה תכנות מונחה-אובייקטים?
כאשר אתה עובד עם תכנות מונחה-אובייקטים, אתה בעצם בונה "מזוודה" שבתוכה את ה"אורז" נתונים ופונקציות יחדיו כאובייקטים. בעזרת שיטת עבודה זו, אתם תוכלו לפצל את הקודים שלכם אפילו יותר.
בעזרת תכנות מונחה-אובייקטים תוכלו לבנות "מזוודה" ( מעכשיו נקרא לזה - "מחלקה" ) שתנהל לכם כמעט כל חלק באתר.

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

לאחר שהבנו מה זה מחלקות, השאלה הבאה נשאלת... כיצד זה עובד? ובכן, כאן מתחיל
חלק ב'. - עבודה עם תכנות מונחה-אובייקטים.
ראשית אנחנו צריכים ליצור את המחלקה. מחלקה מגדירה את סוג האובייקט, לדוגמא אנחנו יכולים ליצור מחלקה בשם Cars על ידי שימוש במשפט - "class", מחלקה זה יכולה להכיל בתוכה כמה מאפיינים פנימיים ( משתני מחלקה ) על ידי שימוש במשפט - "var".
  • דגם
  • צבע
PHP קוד:

class Cars
{
    var 
$model;
    var 
$color;


[ שים לב! ] ניתן לקבוע ערכים קבועים אך פשוטים מראש עבור המאפיינים ( משתני מחלקה ) בצורה הזאת:
PHP קוד:

    var $model "No model"

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

    var $model "Not"."good"

על מנת לפנות למאפיינים ( משתני מחלקה ) מתוך המחלקה אנחנו משתמשים במשתנה המובנה - "$this" המצביע אל המחלקה הנוחכית. במשתנה זה משתמשים עם אופרטור החץ - "<-" בצורה כזאת:
PHP קוד:

$this->model $model

לאחר שהגדרנו מחלקה, אנחנו יכולים להציב "מתודות" ( פונקציות ) במחלקה.
במקרה שלנו אנחנו ניצור כמה פונקציות:
  • set_model
  • set_color
  • get_model
  • get_color

PHP קוד:

class Cars
{
    var 
$model;
    var 
$color;

    function 
set_model($model)
    {
        
$this->model $model;
    } 

    function 
set_color($color)
    {
        
$this->color $color;
    } 

    function 
get_model()
    {
        return 
$this->model;
    } 

    function 
get_color()
    {
        return 
$this->color;
    } 


על מנת לפנות לפונקציות ( מתודות ) מתוך המחלקה אנחנו משתמשים במשתנה המובנה - "$this" המצביע אל המחלקה הנוחכית. במשתנה זה משתמשים עם אופרטור החץ - "<-" בצורה כזאת:
PHP קוד:

$this->set_color("Black"); 

לפיכך אפשר להבין שבעצם המשתנה $this משמש גם לפניה למאפיינים וגם למתודות.

כעת, לאחר שסיימנו להגדיר את המחלקה אפשר ליצור אובייקטים של אותה מחלקה תוך כדי שימוש במשפט - "new". לדוגמא אנחנו יכולים ליצור אובייקט $BMW. את האובייקטים אנחנו מאכסנים במשתנים רגילים.
בצורה הבאה אנחנו יוצרים את האובייקט:
PHP קוד:

$BMW = new Cars

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

קודם כל חשוב להבהיר, שברגע שאנחנו פונים למאפיינים ומתודות מחוץ למחלקה אנחנו פונים אליהם בצורה שונה מאשר "$this->". אנחנו עושים את זה בעזרת משתנה האובייקט ( במקרה שלנו $BMW ).
PHP קוד:

$BMW->set_model("Z4M"); 

וככה זה נראה לאחר שהגדרנו את המודל ואת הצבע, ולאחר מכן פנינו אל המתודות get_model וget_color על מנת לקבל את המודל והצבע:
PHP קוד:

class Cars
{
    var 
$model;
    var 
$color;

    function 
set_model($model)
    {
        
$this->model $model;
    } 

    function 
set_color($color)
    {
        
$this->color $color;
    } 

    function 
get_model()
    {
        return 
$this->model;
    } 

    function 
get_color()
    {
        return 
$this->color;
    } 


$BMW = new Cars;
$BMW->set_model("Z4M");
$BMW->set_color("red");
echo 
"Are you sure you want to purchase <font color=\"".$BMW->get_color()."\"> ".$BMW->get_color()."</font> BMW ".$BMW->get_model()."?"

לסיום חלק ב' נעשה סיכום קצר על הקוד המלא שמלמעלה ^:
תחילה הגדרנו את המחלקה על ידי שימוש במשפט - "class" ופתחנו אותה באמצעות סוגריים מסולסלים:
PHP קוד:

class Cars


לאחר מכן הגדרנו את שני המאפיינים של המחלקה שלנו:
PHP קוד:

    var $model;
    var 
$color

ועכשיו הגדרנו את ארבעת המתודות המתוקות שלנו ( אני אציג רק את set_color ואת get_color כדי לחסוך במשאבי הפורום, במילא הקוד המלא למעלה. ):
PHP קוד:

    function set_color($color)
    {
        
$this->color $color;
    } 

    function 
get_color()
    {
        return 
$this->color;
    } 

סגרנו את המחלקה באמצועת סוגריים מסולסים:
PHP קוד:



עכשיו הגדרנו אובייקט למחלקה:
PHP קוד:

$BMW = new Cars

הכנסנו ערכים למשתנים: [*] במידה והקצתם ערך ברירת מחדל למשתנה זה לא ישפיע, זה בעצם כמו שתעשו:
PHP קוד:

$str "LOL";
$str "Muhahaha";
echo 
$str// Return's Muhahaha 

אז שוב, XD, הכנסנו למשתנים ערכים:
PHP קוד:

$BMW->set_model("Z4M");
$BMW->set_color("red"); 

ולבסוף הבאנו לפלט משפט נחמד במידה ואתם עושים אתר קניית מכוניות { יש אתר כזה? [ טוב נו נגיד וזה אתר של קניית פסלים של מכוניות בגודל קטן...( מינאטורי ) ] }
PHP קוד:

echo "Are you sure you want to purchase <font color=\"".$BMW->get_color()."\"> ".$BMW->get_color()."</font> BMW ".$BMW->get_model()."?"

וכאן מסתיים לו חלק ב' הסקסי!
מתי שיהיה לי שוב זמן פנוי ( יום שבת הבא כנראה ), אכתוב את החלקים הבאים =]

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

מקווה שהמדריך הזה עזר לכם, ושתפיקו ממנו את המיטב שיש לו להציע.
אשמח לענות על כל שאלה בהודעה פרטית או במסנג'ר: INvisioN.net@gmail.com, או באימייל ( בדיוק כמו המסן ).

בהצלחה P:

DorWD 08-04-07 20:38

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

Eran-s 08-04-07 20:55

ח"ח על היוזמה.
מזכיר לי את ההסברים של המורה המטורף שלי לג'אווה. חח

חיים 08-04-07 20:59

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

הכומר 08-04-07 21:03

ציטוט:

נכתב במקור על ידי Eran-s (פרסם 455268)
ח"ח על היוזמה.
מזכיר לי את ההסברים של המורה המטורף שלי לג'אווה. חח

חחח כן בדיוק מה שאני חשבתי עליו רק שאצלנו אחרי המכוניות עברנו לקלפים[או שאולי זה היה לפני].
אבל קבל ח"ח.

reXtea 08-04-07 21:16

תודה על התגובות חברים!

ציטוט:

נכתב במקור על ידי הכומר (פרסם 455274)
חחח כן בדיוק מה שאני חשבתי עליו רק שאצלנו אחרי המכוניות עברנו לקלפים[או שאולי זה היה לפני].
אבל קבל ח"ח.

XD, תודה הבאתי לי רעיון למחלקה במדריך הבא D:
זה בדיוק מחלקה מתאימה להורשה = ]

RS324 08-04-07 21:43

נחמד +
חבל רק שזה לא OOP אמיתי וזה מתאים לגרסא 4 של PHP

גרסא 5 תומכת ב OOP בצורה יותר טוב עם construct ו destruct והצהרות כגון public , private ,static,protected וכד'.
מדריך על זה יכול להיות למשתמשים הרבה יותר מועיל

בכל מקרה כל הכבוד על המאמץ

reXtea 08-04-07 21:49

ציטוט:

נכתב במקור על ידי RS324 (פרסם 455299)
נחמד +
חבל רק שזה לא OOP אמיתי וזה מתאים לגרסא 4 של PHP

גרסא 5 תומכת ב OOP בצורה יותר טוב עם construct ו destruct והצהרות כגון public , private ,static,protected וכד'.
מדריך על זה יכול להיות למשתמשים הרבה יותר מועיל

בכל מקרה כל הכבוד על המאמץ

חבל שלא שמת לב ולא קראת את הכל
כי זה רק חלק א' של המדריך

ציטוט מהמדריך - "וכאן מסתיים לו חלק ב' הסקסי!
מתי שיהיה לי שוב זמן פנוי ( יום שבת הבא כנראה ), אכתוב את החלקים הבאים =]

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

אם הייתי קורא הייתי רואה שזה רק חלק מהמדריך, ואת כל הדברים שציינת אני אלמד במדריך הבא..

Ori The Man 09-04-07 03:51

תודה רבה!!!
מדריך מצוייןןןן!! מוסבר כמו שצריך!! ומובן!!
עזרתה מאוד..!!

Gal Shafrir 09-04-07 08:04

תודה רבה מדריך מעולה וקליט!


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

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