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

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

amirs_5 16-08-06 16:27

2 תווים ב PHP שנתקלתי בהם ולא הבנתי..
 
התו הראשון שנתקלתי בו זה & .
לא הבנתי מה הוא עושה , נתקלתי בו לפני שם של פונקצייה.

התו השני שנתקלתי בו זה :: (נקודותיים כפולים)

אשמח אם תסבירו עליהם :)
טנקס.

Eli-Hai 16-08-06 16:30

ה&& מתפקד כמו AND, בתנאים ולולאות. לדוגמא,
קוד:

if( !empty($var) && $var2 > 1 )
        echo " $var ";

במקרה כזה, רק אם 2 התנאים הללו (אם $var לא ריק, ואם $var2 גדול מ1), התנאי יחזיר TRUE, אם אחד מהתנאים שלנו שגויים הוא יחזיר FALSE.

amirs_5 16-08-06 16:38

לא דיברתי על && אלא על & .

eLad 16-08-06 16:48

& - call by reference

אם זה בין שני מספרים אז זה אופורטור בינארי

amirs_5 16-08-06 17:00

אני ראיתי אותו רשום ככה:
PHP קוד:

function &function_name() 


RS324 16-08-06 17:22

אני בחיים לא ראיתי כזה דבר
אני גם לא בטוח שכזה דבר יעבוד

מה שכן ראיתי

זה ככה

PHP קוד:

function myf(&$var

וזה בעצם מוודא ש VAR הוא משתנה ולא STRING לדוגמא

amirs_5 16-08-06 17:30

& - מוודא ש VAR הוא משתנה ולא string ?!
אבל בתוך משתנה יכול להיות מחרוזת.

RS324 16-08-06 17:37

1. התכוונתי במקרה הספציפי ההוא שהראיתי לך

2. אין דרך יותר טובה להבנה מאשר להדגמה דרך קוד
אז תריץ את הקוד הזה ותבין :

PHP קוד:

<?php


function printuserinfo(&$userinfo)
{
    
print_r($userinfo);
}



$userinfo = array(
                
'userid' =>1,
                
'username'=>'rs324',
                
'usergroupid' =>5
                
);    
                
    
printuserinfo($userinfo); // will print the array of user info
    
    
    
    
$rs_info 'my username is : rs324';
    
    
printuserinfo($rs_info); // will make error beacuse $rs_info is string and not var
    
    


?>


amirs_5 16-08-06 17:41

זה הדפיס לי
קוד:

Array ( [userid] => 1 [username] => rs324 [usergroupid] => 5 ) my username is : rs324
שזה גם מה שהיה מדפיס ללא ה &.
אז לא הבנתי מה השימוש בזה =]

RS324 16-08-06 17:50

הפונקציה לא תקבל את

PHP קוד:

    $rs_info 'my username is : rs324';
    
    
printuserinfo($rs_info); // will make error beacuse $rs_info is string and not var 

וזה המטרה של ה & בתוך השורה של הפונקציה

בכללי & משמש גם ל BIT אם אתה מבין בזה ויודע מה זה..

amirs_5 16-08-06 17:52

אם הפונקציה לא קיבלה את זה למה היא הדפיסה
my username is : rs324
?....

RS324 16-08-06 17:59

ציטוט:

נכתב במקור על ידי amirs_5
אם הפונקציה לא קיבלה את זה למה היא הדפיסה
my username is : rs324
?....


טעות שלי :

את
PHP קוד:

printuserinfo('my username is : rs324'); 

הוא לא יקבל אבל את $RS_INFO הוא כן יקבל
כי RS_INFO הוא משתנה...

תנסה ותראה

תקבל ארור כזה

PHP קוד:

Fatal errorOnly variables can be passed by reference 


amirs_5 16-08-06 18:14

האא אז התו & רק לא מאפשר להכניס string לתוך פונקציה ?
את הקטע הזה הבנתי :)
אבל בהמשך הקוד הוא רשום בעוד צורה :
PHP קוד:

        $this->m_widgets[$id] =& $widget

אז זה לא הבנתי, כי כשאנחנו הכנסו משתנה לתוך הפונקציה עם STRING הוא עבד
אבל פה מוגדר שמשתנה שווה למשתנה ועם הסימן ה& למה?

RS324 16-08-06 18:16

ציטוט:

נכתב במקור על ידי amirs_5
האא אז התו & רק לא מאפשר להכניס string לתוך פונקציה ?
את הקטע הזה הבנתי :)
אבל בהמשך הקוד הוא רשום בעוד צורה :
PHP קוד:

        $this->m_widgets[$id] =& $widget

אז זה לא הבנתי, כי כשאנחנו הכנסו משתנה לתוך הפונקציה עם STRING הוא עבד
אבל פה מוגדר שמשתנה שווה למשתנה ועם הסימן ה& למה?


בשביל לוודא ש $widget הוא באמת משתנה...

אם תעשה לדוגמא
unset($widget)
לפני
זה לא יעבוד לך וייתן לך את אותו ארור כמו מקודם

Tomer 16-08-06 18:19

בד"כ & הוא ייצוג בינארי של משתנה, עד כמה שאני יודע.

amirs_5 16-08-06 18:23

האאא אוקיי הבנתי,
ומה לגבי התו השני של הנקודותיים הכפולות (::)

RS324 16-08-06 19:00

ציטוט:

נכתב במקור על ידי Atom-Bomb
בד"כ & הוא ייצוג בינארי של משתנה, עד כמה שאני יודע.

כן אבל אבל זה שימוש נוסף שלו הסימן & הוא גם משמש ב BITS לבדוק איזה דלוקים ואיזה מכובים. ( אני משתמש בזה במערכת הרשאות מתקדמת)

לגבי הסימן : בד"כ ראיתי את זה מופיע ככה :: וגם זה רק בתוך CLASS

אני לא יודע למה זה משמש.....

amirs_5 16-08-06 19:04

הא אוקיי אחי תודה רבה :)

בניה 16-08-06 19:05

ציטוט:

נכתב במקור על ידי amirs_5
האאא אוקיי הבנתי,
ומה לגבי התו השני של הנקודותיים הכפולות (::)

ב"ה

:: מסמן שזה קורא לפונקצית מחלקה או משהו כזה.
בPHP זה לא דבר עקרוני אבל בC++ זה שונה.
קראתי על זה פעם ואני לא זוכר מה זה בדיוק.

amirs_5 16-08-06 21:43

ציטוט:

נכתב במקור על ידי בניה
ב"ה

:: מסמן שזה קורא לפונקצית מחלקה או משהו כזה.
בPHP זה לא דבר עקרוני אבל בC++ זה שונה.
קראתי על זה פעם ואני לא זוכר מה זה בדיוק.

כן זה קורא לפונקציית מחלקה .
הסבירו לי.:)
אתה רושם את שם המחלקה
class_name::func_name
וזה קורא לפונקציה שנבחרה מהמחלקה שנבחרה.
ככה הבנתי, ותודה :)

RS324 16-08-06 22:14

clasname->funcname
יותר פשוט

amirs_5 17-08-06 02:16

ציטוט:

נכתב במקור על ידי RS324
clasname->funcname
יותר פשוט

לאא יש בניהם הבדלים בשימושים.
:: = קראיה לפונקציה מתוך מחלקה ללא יצירת מופע של המחלקה.

RS324 17-08-06 02:31

כלומר אני לא צריך לאתחל את המחלקה לתוך משתנה ?
לדוגמא
:
$db = new database

Unknown 17-08-06 10:35

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

function lala(&$variable) {
$variable = 5;
}

$x = 1;
lala($x);

ה
$X
ישתנה, הערך שלו ישתנה ישירות דרך הפונקציה גם בלי
RETURN
בעצם זה עובד כמו פרוצדורה למי שיודע מה זה
----

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

Elad-A 17-08-06 12:45

ציטוט:

נכתב במקור על ידי Unknown
קודם כל, התו & בפונקציה מקשר לכתובת המשתנה בזכרון
כלומר אם אתה עושה פונקציה כזאת:
קוד:

function lala(&$variable) {
$variable = 5;
}

$x = 1;
lala($x);

ה
$X
ישתנה, הערך שלו ישתנה ישירות דרך הפונקציה גם בלי
RETURN
בעצם זה עובד כמו פרוצדורה למי שיודע מה זה
----

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

אז אם ככה מה יהיה הפלט אחרי השינוי? 1?
עריכה:
הרצתי את הקוד ולא החזיר כלום

Unknown 17-08-06 14:02

כי לא עשית אולי שזה ידפיס את $X?
והפלט אחרי השינוי יהיה 5

RS324 17-08-06 15:05

לגבי ה ::

קיבלתי את הארור הזה :

PHP קוד:

Parse errorparse errorunexpected T_PAAMAYIM_NEKUDOTAYIM 

אז לא נראה לי שהוא מחליף את ->

Unknown 17-08-06 16:50

כי בונים את הספריות בצורה אחרת...
תקרא על זה בPHP.NET ותבין בדיוק מה צריך לעשות ואיך, למרות ששוב, זאת הקבלה ל->

amirs_5 17-08-06 17:42

ציטוט:

נכתב במקור על ידי RS324
לגבי ה ::

קיבלתי את הארור הזה :

PHP קוד:

Parse errorparse errorunexpected T_PAAMAYIM_NEKUDOTAYIM 

אז לא נראה לי שהוא מחליף את ->

RS ,אולי לא כתבת טוב .
תנסה את זה
PHP קוד:

<?php
class dugma
  
{
function 
blabla(){
echo 
"it is dugma";
}
  
}
dugma::blabla();
?>



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

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