הרשם שאלות ותשובות רשימת חברים לוח שנה הודעות מהיום

חזור   הוסטס - פורום אחסון האתרים הגדול בישראל > עיצוב גראפי, תכנות על כל שפותיו וקידום ושיווק אתרים > פורום תיכנות > תכנות - מדריכים, code snippets

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 08-04-07, 20:28   # 1
reXtea
חבר מתקדם
 
reXtea's Avatar
 
מיני פרופיל
תאריך הצטרפות: Dec 2006
מיקום: באר שבע
גיל: 30
הודעות: 374
שלח הודעה באמצעות MSN אל reXtea

reXtea לא מחובר  

[מדריך] 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:
__________________
Amir fridman
-----------------------
Professional website developer.
xhtml, css, javascript, xml, ajax, php, mysql

Last edited by reXtea; 08-04-07 at 20:39..
  Reply With Quote
ישן 08-04-07, 20:38   # 2
DorWD
תודה על תרומתך.
 
DorWD's Avatar
 
מיני פרופיל
תאריך הצטרפות: Jan 2006
מיקום: עפולה
גיל: 30
הודעות: 2,259

DorWD לא מחובר  

כל הכבוד על היוזמה!.
אשמח לקרוא עוד מדריכים שלך
__________________
מתכנת WEB
  Reply With Quote
ישן 08-04-07, 20:55   # 3
Eran-s
הוסטסניון
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
הודעות: 2,609

Eran-s לא מחובר  

ח"ח על היוזמה.
מזכיר לי את ההסברים של המורה המטורף שלי לג'אווה. חח
__________________
מפתח ומתחזק אתרים.
  Reply With Quote
ישן 08-04-07, 21:03   # 4
הכומר
קידום ושיווק אתרים
תודה על תרומתך איש! (:
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: תל אביב, ישראל
גיל: 34
הודעות: 1,503

הכומר לא מחובר  

ציטוט:
נכתב במקור על ידי Eran-s צפה בהודעה
ח"ח על היוזמה.
מזכיר לי את ההסברים של המורה המטורף שלי לג'אווה. חח
חחח כן בדיוק מה שאני חשבתי עליו רק שאצלנו אחרי המכוניות עברנו לקלפים[או שאולי זה היה לפני].
אבל קבל ח"ח.
  Reply With Quote
ישן 08-04-07, 21:16   # 5
reXtea
חבר מתקדם
 
reXtea's Avatar
 
מיני פרופיל
תאריך הצטרפות: Dec 2006
מיקום: באר שבע
גיל: 30
הודעות: 374
שלח הודעה באמצעות MSN אל reXtea

reXtea לא מחובר  

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

ציטוט:
נכתב במקור על ידי הכומר צפה בהודעה
חחח כן בדיוק מה שאני חשבתי עליו רק שאצלנו אחרי המכוניות עברנו לקלפים[או שאולי זה היה לפני].
אבל קבל ח"ח.
XD, תודה הבאתי לי רעיון למחלקה במדריך הבא D:
זה בדיוק מחלקה מתאימה להורשה = ]
__________________
Amir fridman
-----------------------
Professional website developer.
xhtml, css, javascript, xml, ajax, php, mysql
  Reply With Quote
ישן 08-04-07, 20:59   # 6
חיים
חבר וותיק
 
חיים's Avatar
 
מיני פרופיל
תאריך הצטרפות: Sep 2006
מיקום: עפולה
גיל: 31
הודעות: 1,548
שלח הודעה באמצעות ICO אל חיים שלח הודעה באמצעות MSN אל חיים Send a message via Skype™ to חיים

חיים לא מחובר  

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


Last edited by חיים; 08-04-07 at 21:49..
  Reply With Quote
ישן 09-04-07, 10:05   # 7
reXtea
חבר מתקדם
 
reXtea's Avatar
 
מיני פרופיל
תאריך הצטרפות: Dec 2006
מיקום: באר שבע
גיל: 30
הודעות: 374
שלח הודעה באמצעות MSN אל reXtea

reXtea לא מחובר  

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

מחלקה אחת יקראו לה - "DB" והיא תכיל בתוכה מתודות שיתקשרו עם הבסיס תנתונים... אחת שתשלח שאילתה, השניה שתתחבר לבסיס, השלישית תספור כמה שורות התקבלו וכל מיני שטויות...

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

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

מחלקה של שגיאות... מחלקה של קבצי שפה...
תשמע, הכל זה פרי הדמיון.
הכיף שבמחלקות זה שזה מספק לך 100% יעלות מהקוד והרבה יותר יעיל.

בצלחה =]
__________________
Amir fridman
-----------------------
Professional website developer.
xhtml, css, javascript, xml, ajax, php, mysql
  Reply With Quote
ישן 09-04-07, 11:15   # 8
חיים
חבר וותיק
 
חיים's Avatar
 
מיני פרופיל
תאריך הצטרפות: Sep 2006
מיקום: עפולה
גיל: 31
הודעות: 1,548
שלח הודעה באמצעות ICO אל חיים שלח הודעה באמצעות MSN אל חיים Send a message via Skype™ to חיים

חיים לא מחובר  

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

מחלקה אחת יקראו לה - "DB" והיא תכיל בתוכה מתודות שיתקשרו עם הבסיס תנתונים... אחת שתשלח שאילתה, השניה שתתחבר לבסיס, השלישית תספור כמה שורות התקבלו וכל מיני שטויות...

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

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

מחלקה של שגיאות... מחלקה של קבצי שפה...
תשמע, הכל זה פרי הדמיון.
הכיף שבמחלקות זה שזה מספק לך 100% יעלות מהקוד והרבה יותר יעיל.

בצלחה =]
אוקיי תודה נתת לי כבר המון ראיונות חח תודה רבה לך אני כבר מתחיל להשתמש בהם למערכת חדשה
__________________
בברכה, חיים.

  Reply With Quote
ישן 08-04-07, 21:43   # 9
RS324
תודה על תרומתך.
 
מיני פרופיל
תאריך הצטרפות: May 2006
הודעות: 3,173

RS324 לא מחובר  

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

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

בכל מקרה כל הכבוד על המאמץ
  Reply With Quote
ישן 08-04-07, 21:49   # 10
reXtea
חבר מתקדם
 
reXtea's Avatar
 
מיני פרופיל
תאריך הצטרפות: Dec 2006
מיקום: באר שבע
גיל: 30
הודעות: 374
שלח הודעה באמצעות MSN אל reXtea

reXtea לא מחובר  

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

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

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

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

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

אם הייתי קורא הייתי רואה שזה רק חלק מהמדריך, ואת כל הדברים שציינת אני אלמד במדריך הבא..
__________________
Amir fridman
-----------------------
Professional website developer.
xhtml, css, javascript, xml, ajax, php, mysql
  Reply With Quote
השב

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 

Tags
מדריך למתחילים, מדריך oop, מדריך php


חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


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

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