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

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

   
|!|

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

reXtea לא מחובר  

[מדריך] PHP - למתחיל בOOP. חלק ג' וד'.

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

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

לבסוף היה לי המון זמן פנוי גם היום, אז החלטתי לכתוב את חלק ג' וד' היום D:

מומלץ לקרוא את חלק א' וב' לפני שתקראו את החלקים הבאים: http://www.hosts.co.il/forums/showthread.php?t=43115


חלק ג'. - הגבלת גישה למתודות ומאפיינים.
כאשר אתם יוצרים מחלקה, אתם יכולים לגשת למתודות ולמאפיינים שלה בקלות, אומנם לפעמים תרצו להגביל גישה מחוץ למחלקה למאפיין או למתודה כלשהי. ניקח לדוגמא את המחלקה הבאה:
PHP קוד:
class Fonts
{
    var 
$size "2";

    function 
set_size($size)
    {
        if (
$size 2) {
            
$this->size $size;
        } 
    } 
    function 
get_size()
    {
        return 
$this->size $size;
    } 


$Arial = new Fonts;
$Arial->set_size("3"); 
אומנם עשינו תנאי שבודק האם הגודל גדול מ2, רק אז תיתן לו לערוך את המאפיין, אבל יכלנו בקלות להוסיף בסוף את הקוד הבא:
PHP קוד:
$Arial->size "1"
אז הגענו למסקנה שאנחנו צריכים להגביל גישה אל אותו מאפיין מחוץ למחלקה, וכאן אנחנו צריכים להפוך את המאפיין לprivate - "פרטי" בתוך המחלקה.
אנחנו עושים דבר זה על ידי שימוש במאפייני הגישה הבאים:
  • public - ברירת המחדל שתמיד נמצאת במידה ולא הגדרת, נגיש בכל מקום.
  • private - פרטי, נגיש רק בתוך המחלקה ולא מחוצה לה.
  • protected - מוגן, נגיש לאותה מחלקה ולמחלקות שנגזרות ממנה בלבד.

כעת נגדיר את המאפיין size כפרטי על ידי שימוש במשפט - "private" בצורה כזאת:
PHP קוד:
    private $size "2"
וכעת, במידה וננסה לבצע את הקוד הזה:
PHP קוד:
$Arial->size "1"
מחוץ למחלקה, נקבל שגיאה.

כעת נשאלת שאלה? האם מתודות יכולות להיות גם פרטיות או מוגנות? כן.
עושים זאת בצורה הזאת:
PHP קוד:
    private function set_size($size
במידה וננסה לקרוא למתודה מחוץ מחוץ למחלקה, שגיאה תתקבל.

במידה ונשתמש בprotected, נוכל להשתמש במאפיינים ובתמתודות רק מתוך המחלקה הנוחכית ומהמחלקה הנגזרת ממנה ( הורשה ) -> על זה ננלמד בפרק ה'.

אז כאן מסתיים לו חלק ג',
כעת נעבור לחלק הבא.

חלק ד'. - בנאים.
הבנאי הוא מתודה בשם __construct, וכאשר יוצרים את האובייקט אפשר להעביר נתונים לבנאי, והסקריפט שיהיה בתוך המתודה של הבנאי ירוץ עם הגדרת האובייקט. ( זאת אומרת שלא נצטרך לקרוא לו על מנת שהוא יפעל, הוא יפעל אוטומטית ) בואו ניזכר באיך מגדירים אובייקט רגיל:
PHP קוד:
$variable = new class_name
נתחיל בדוגמא פשוטה על איך יוצרים בנאי, נשלב בנאי במחלקה הבאה:
PHP קוד:
class Fonts
{
    var 
$size;

    function 
__construct($size)
    {
            
$this->size $size;
    } 
    function 
get_size()
    {
        return 
$this->size $size;
    } 

למי שלא הבין, זה פשוט מאוד, פשוט בונים מתודה ששמה יהיה: __construtct, ומחליטים איזה ערכים היא תקבל.

כעת אנחנו נגדיר אובייקט למחלקה, אך כאשר אנחנו עובדים עם בנאים אנחנו צריכים להעביר נתונים לבנאי... במקרה שלנו את גודל הפונט ($size).
אנחנו נעשה את זה בצורה הזאת:
PHP קוד:
$Arial = new Fonts("3"); 
כעת המספר 3 מעובר למתודת הבנאי, והבנאי שלנו יכניס את המשתנה שהוא קיבל אל המאפיין size.

במידה וסיימתם לעבוד עם אובייקט מסויים או שאתם רוצים למחוק אותו, תוכלו להשתמש במשפט - "unset" בצורה כזאת:
PHP קוד:
unset $Arial
סוג נוסף של בנאי, הוא __destruct.
מתודות ה__destruct תפעל רק כאשר כל אזכור של המחלקה נעשה או שכבר האובייקט הושמד ( על ידי שימוש ב - "unset" ). לאחר שdestruct יפעל הוא ישמיד את המחלקה ( בדיוק כמו unset ).
PHP קוד:
class Fonts
{
    var 
$size;

    function 
__construct($size)
    {
            
$this->size $size;
    } 
    function 
get_size()
    {
        return 
$this->size $size;
    } 
    function 
__destruct() {
      die(
"Destroying the object");
 }


$Arial = new Fonts("3"); 
אז זהו, כאן מסתיים חלק ד' =]
מקווה שהחלק הזה של המדריך היה ברור והבנתם הכל = ]

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

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

חיים לא מחובר  

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

  Reply With Quote
ישן 09-04-07, 19:02   # 3
reXtea
חבר מתקדם
 
reXtea's Avatar
 
מיני פרופיל
תאריך הצטרפות: Dec 2006
מיקום: באר שבע
גיל: 31
הודעות: 374
שלח הודעה באמצעות MSN אל reXtea

reXtea לא מחובר  

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

חיים לא מחובר  

אבל בכל האתרים של לימוד PHP כתוב ככה אתה יכול להסביר את זה?
__________________
בברכה, חיים.

  Reply With Quote
ישן 09-04-07, 19:17   # 5
בניה
משתמש - היכל התהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: נחושה
הודעות: 3,434

בניה לא מחובר  

ציטוט:
נכתב במקור על ידי INvisioN צפה בהודעה
לא זאת לא טעות, זה אפשרי ליצור מתודה בשם של המחלקה והיא כן תפעל כאשר נגדיר אובייקט אבל לא תוכל להעביר אליה נתונים...
זה הכל =]
פונקצית הבנאי היא פונקציה בשם המחלקה ואוטומטית קוראים לה שיצרים אוביקט חדש וביצירת האוביקט שולחים אליה את הפרמטרים.
PHP קוד:
$x = new XYZ($arg1,$arg2); 
  Reply With Quote
ישן 09-04-07, 19:50   # 6
Eran-s
הוסטסניון
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
הודעות: 2,609

Eran-s לא מחובר  

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

אך ב-PHP ניתן גם באמצעות איך שכותב המדריך ציין.
__________________
מפתח ומתחזק אתרים.
  Reply With Quote
ישן 09-04-07, 20:05   # 7
reXtea
חבר מתקדם
 
reXtea's Avatar
 
מיני פרופיל
תאריך הצטרפות: Dec 2006
מיקום: באר שבע
גיל: 31
הודעות: 374
שלח הודעה באמצעות MSN אל reXtea

reXtea לא מחובר  

ציטוט:
נכתב במקור על ידי Eran-s צפה בהודעה
כמו שכבר ציינו פונקציה בנאית היא פונקציה בשם המחלקה, יש כמה סוגים כגון:
Default Constructor - פונקציה אשר לא מקבלת פרמטרים וקובעת פרמטרים שונים.
Constructor מפורש - מקבל את כל הפרמטרים הקיימים במחלקה ומעדכן אותם.

אך ב-PHP ניתן גם באמצעות איך שכותב המדריך ציין.
יאפ =] אני אישית משתמש משתמש לרוב ב__construct ... זה מאוד נחמד =]
ואממ אשמח אם תקרא לי אמיר במקום "כותב המדריך" XD =]
__________________
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. הזמן כעת הוא 22:01.

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