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

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

Imri 20-07-08 07:44

שאלה בקשר למשתנה.
 
שלום.

יש לי קוד כזה:

קוד:

require ROOT_PATH  . "sources/handlers/user_cks.php";
require ROOT_PATH  . "sources/eclass.php";

        $eclass = new eclass();
                $eclass->init_db_connection_01();

        $user_cks = new user_cks();
                $user_cks->is_authed();

אני מנסה ליצור חיבור של משתנה בין שתי המחלקות,
כלומר, שהקוד של המחלקה user_cks יוכל להשתמש במשתנה eclass.
זה לא ממש עובד לי. איך אני צריך להגדיר את eclass כדי שזה יקרה?
אני צריך בתוך המחלקה user_cks לעשות var $eclass? האם הנתונים של eclass ה"ראשי" יועברו לתוך זה?

אני מנסה ליצור משהו כמו ב- IPB,
שם, לפי מה שהבנתי, יש קובץ index שממנו קוראים ל- ipsclass ולאחר מכן קוראים למחלקות נוספות.
המחלקות האחרות שנקראות בהמשך הקוד משתמשות ב- ipsclass בלי לעשות שוב require ושוב ... new ipsclass. איך זה?

תודה!

Daniel 20-07-08 12:59

אני לא בטוח שהבנתי אותך, שקלת להשתמש ב-extend?

BlueNosE 20-07-08 13:04

global?
class in class:
PHP קוד:

$class1->class2->var

?
extends?

DvirCohen 20-07-08 13:56

PHP קוד:

class user_cks
{
  var 
$eclass;
  
  
// more vars and functions..
}

$user_cks = new user_cks();
$eclass = new eclass();

$user_cks->eclass =& $eclass

או

PHP קוד:

class user_cks
{
  var 
$eclass;
  
  function 
user_cks( &$eclass // function __construct( &$eclass ) -> php5
  
{
     
$this->eclass =& $eclass;
  }
}

$eclass = new eclass();
$user_cks = new user_cks( &$eclass ); 


Daniel 20-07-08 14:00

ציטוט:

נכתב במקור על ידי DvirCohen (פרסם 652042)
PHP קוד:

class user_cks
{
  var 
$eclass;
  
  
// more vars and functions..
}

$user_cks = new user_cks();
$eclass = new eclass();

$user_cks->eclass =& $eclass

או

PHP קוד:

class user_cks
{
  var 
$eclass;
  
  function 
user_cks( &$eclass // function __construct( &$eclass ) -> php5
  
{
     
$this->eclass =& $eclass;
  }
}

$eclass = new eclass();
$user_cks = new user_cks( &$eclass ); 


תקן אותי אם אני טועה, אבל השיטה השניה זוללת מלא משאבים, לא? לאכסן משתנה גדול פעמיים?

BlueNosE 20-07-08 14:32

למה פעמיים? אותו pointer

Imri 20-07-08 14:36

תודה רבה,
 
אבל אפשר לקבל הסבר על זה?
מה זה עושה?

Daniel 20-07-08 15:42

ציטוט:

נכתב במקור על ידי BlueNosE (פרסם 652052)
למה פעמיים? אותו pointer

אם לא משתמשים ב-extends, אני לא בטוח שזה לא נשמר כ-2 משתנים שונים שמסתנכרנים... איי פעם בדקת?

BlueNosE 20-07-08 17:17

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

Daniel 20-07-08 17:30

צודק, טעות שלי, פספסתי את זה.


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

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