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

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   שאלה בPHP | כיצד ניתן בתוך מחלקה לקרוא לפונקציה ממחלקה אחרת? (https://hosts.co.il/forums/showthread.php?t=58292)

Ben Segal 24-12-07 16:32

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

נגיד יש לי קובץ A שיש בו את המחלקה A ויש לי קובץ B שיש בו את המחלקה B.
איך אני יכול בתוך פונקציה במחלקה A לקרוא לפונקציה אשר נמצאת במחלקה B?

DavidBD 24-12-07 16:34

עריכה: מי שמתחתי צודק.

Meir 24-12-07 16:35

הורשה:

PHP קוד:

<?php

class 
{
    function 
test()
    {
        return 
'test';
    }
}

class 
extends B
{
    function 
print_test()
    {
        echo 
$this->test();
    }
}

$a = new A();
$a->print_test();

?>


Ben Segal 24-12-07 16:45

ציטוט:

נכתב במקור על ידי Meir (פרסם 594327)
הורשה:

PHP קוד:

<?php

class 
{
    function 
test()
    {
        return 
'test';
    }
}

class 
extends B
{
    function 
print_test()
    {
        echo 
$this->test();
    }
}

$a = new A();
$a->print_test();

?>


אני מכיר את השיטה הזאת אבל אם יש לי כמה מחלקות אני לא יכול לעשות את זה ככה.
אני רוצה לדעת איך לעשות את זה כמו שעשו בIPB, לדוגמא:
PHP קוד:

$this->ipsclass->load_template('skin_boards'); 


Meir 24-12-07 17:05

אני מניח שהם מימשו את זה כך:

PHP קוד:

<?php

class B
{
    function 
template($name)
    {
        return 
$name;
    }
}

class 
A
{
    var 
$ipsclass;

    function 
__construct()
    {
        
$this->ipsclass = new B();
    }
    
    function 
example()
    {
        return 
$this->ipsclass->template('test');
    }
}

$a = new A();
echo 
$a->ipsclass->template('skin');
echo 
$a->example();

?>


Ben Segal 24-12-07 22:23

עובד :)
תודה רבה, גרמת לי להבין כל מיני דברים שלא הבנתי בעבר, ועזרתי לי מאוד במערכת שאני בונה.

DvirCohen 26-12-07 22:13

כמו שאמרתי לך בן אבל נכתוב גם לאחרים
הפונקציות שמאיר נתן לך יפעלו רק בPHP5 (אני לא יודע לגבי אקסטנד וכו' אבל קונסטרקטור זה רק PHP5)
מה שIPB עושים זה שבכל מחלקה יש משתנה $ipsclass ואליו הם מייחסים את האובייקט $ipsclass דרך קובץ האינדקס.

PHP קוד:

// סתם קבצים לייבא ולהפעיל..
$choise = array ("boards, topics");

// $_GET['act'] = boards

include $choise[$_GET['act']].".php"// include boards.php
$class = new $choise[$_GET['act']]; // new boards

$class->ipsclass =& $ipsclass// ייחוס לאובייקט המקורי 

ככה זה יפעל בכל גירסא


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

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