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

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

   
|!|

 
 
כלים לאשכול תצורת הצגה
Prev הודעה קודמת   הודעה הבאה Next
ישן 09-04-07, 18:11   # 1
reXtea
חבר מתקדם
 
reXtea's Avatar
 
מיני פרופיל
תאריך הצטרפות: Dec 2006
מיקום: באר שבע
גיל: 30
הודעות: 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
 

חברים פעילים הצופים באשכול זה: 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. הזמן כעת הוא 01:59.

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