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

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

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 24-04-11, 23:47   # 1
link
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
גיל: 36
הודעות: 191

link לא מחובר  

משהו מוזר בהורשה בPHP

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

class test
{
    var 
$check;

    function 
test($test)
    {
        
$this->check $test;
        echo 
$this->check .'<br />';
    }
}

$bellboy = new test('roy');

class 
second extends test
{
    function 
second()
    {
        echo 
$this->check;
    }
}

$bellgirl = new second;

?>
אני לא מבין למה $this->check לא מודפס לי עוד הפעם. יכול להיות שזו בעיה רק אצלי בשרת?

תודה רבה,
רועי.
  Reply With Quote
ישן 25-04-11, 00:42   # 2
בניה
משתמש - היכל התהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: נחושה
הודעות: 3,434

בניה לא מחובר  

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

אם תגדיר את המשתנה כstatic יש מצב שזה יעבוד,גם זה לא בטוח אם הוא יהיה זמין במחלקה יורשת.
  Reply With Quote
ישן 25-04-11, 01:07   # 3
link
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
גיל: 36
הודעות: 191

link לא מחובר  

אוקי, אז אם אין לי אפשרות לגשת למשתנים מהמחלקה הקודמת - אז למה להוריש?
  Reply With Quote
ישן 25-04-11, 01:45   # 4
בניה
משתמש - היכל התהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: נחושה
הודעות: 3,434

בניה לא מחובר  

המטרה של הורשה זה לא לגשת למופעים אחרים אלא למחזר את הקוד של המחלקה הקודמת.

PHP קוד:
<?php
class myparentclass {
    
    public 
$data 'asdasdf';
    
    public function 
__construct() {
        
    }
    
}


class 
mychildclass extends myparentclass {
    
    
    public function 
__construct() {
        echo 
$this->data;
    }
    
}


$obj = new mychildclass();
?>
זה לדוגמא יציג לך את הערך של המשתנה data של מחלקת האב כי זה משהו שאפשר לרשת כי הוא מוגדר בתוך המחלקה.
  Reply With Quote
ישן 25-04-11, 16:57   # 5
link
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
גיל: 36
הודעות: 191

link לא מחובר  

לא התכוונתי למה מבחינת תכנות, הרי למה לך לרשת דברים אם אתה לא יכול למחזר אותם.
נגיד ומתי שהו לפני ההורשה הגדירו ערך חדש למשתנה מחלקה והמחלקה המורישה לא תוכל להסתמך ע"פ הערך החדש כי היא לא יכולה לגשת לשם אז יש פה בעיה מסוימת בקוד. הרעיון המקורי היה שנגיד שישנה מחלקה מרכזית ואז רוצים לעשות עוד מחלקה אז לא לעשות global למשתנה שאליו הגדרת את המחלקה(אותו משתנה שמוצמד למילה new) אלא פשוט לעשות extends.

בכול מקרה, לא משנה. תודה על העזרה בכל מקרה.
  Reply With Quote
ישן 25-04-11, 17:17   # 6
BlueNosE
אין כמו ב127.0.0.1
 
BlueNosE's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: כפ"ס
גיל: 32
הודעות: 4,086

BlueNosE לא מחובר  

תשתמש בsuper(), או בPHP - פשוט תקרא שוב לconstructor. תכתוב $this->test() בתוך הקונסטרטור של המחלקה היורשת.
__________________
עומר,
admin [@] rely.co.il

בניית אתרים Rely

סלנג מילון סלנג utter
  Reply With Quote
ישן 25-04-11, 17:36   # 7
link
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
גיל: 36
הודעות: 191

link לא מחובר  

כן, אבל אם שינית את אחד הערכים של המשתנים במחלקה הראשית המחלקה המורישה לא תקבל אותם, למרות שאתה מבצע את ההורשה אחרי שינוי הערך.
  Reply With Quote
ישן 25-04-11, 18:25   # 8
Shay Ben Moshe
משתמש - היכל התהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2007
הודעות: 1,397

Shay Ben Moshe לא מחובר  

לא. אתה טועה לחלוטין. פיספסת את כל היסודות של תכנות מונחה עצמים.
בקצרה - יש לך מחלקות שמייצגות טיפוסי נתונים (test וsecond). יש לך מופעים שהם אובייקטים של המחלקה ($bellboy ו$bellgirl). אין קשר בין המופעים השונים של המחלקה, והם אינם משפיעים זה על זה. ההורשה היא לא בין מופעים אלא בין מחלקות.

אם אתה רוצה אתה יכול להיכנס לבלוג שלי, פרסמתי סדרת פוסטים על תכנות מונחה עצמים נכנסתי שם לכל נושא לעומק.
http://www.xn----0hcb6acyq1epc.com/%...3%D7%A7%D7%A1/
__________________
שי בן משה - בונה אתרים
חותך אתרים, ומתכנת צד לקוח וצד שרת.
  Reply With Quote
ישן 26-04-11, 00:17   # 9
link
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
גיל: 36
הודעות: 191

link לא מחובר  

אוקי, בוא לא נקרא לזה הורשה. אין דרך בPHP לתקשר בין מחלוקות. ז"א - לבצע אינטראקציה בין מחלוקות? ואני לא מתכוון בדרך עקיפה עם משתנים שמועברים בעקיפין.
  Reply With Quote
ישן 26-04-11, 00:22   # 10
Shay Ben Moshe
משתמש - היכל התהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2007
הודעות: 1,397

Shay Ben Moshe לא מחובר  

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

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


חוקי פירסום
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. הזמן כעת הוא 15:18.

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