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

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

Ori The Man 29-05-12 22:00

החזרת מערך (array) מפונקציה במחלקה
 
אני מכין פונקציה בתוך מחלקה שאמורה להחזיר לי מערך
במקום זה היא מחזירה לי רק מערך 1 (במקום 1 לכל שורה)
חיפשתי באינטרנט לא מצאתי את התשובה :S
מה עשיתי לא נכון

PHP קוד:

class DB
    
{
    
    function 
get_all_assoc($query) {
    
$query2 mysql_query($query);
    while(
$r[]=mysql_fetch_assoc($query2))
        {
    return 
$r;
        }
    
    }
    
    } 
//End Of Class 


בניה 29-05-12 22:08

RETURN עוצרת את הריצה של הפוקציה.
כדי שמה שאתה רוצה לעשות יעבוד אתה צריך לאסוף את הנתונים בתוך הלולאה, ואחריה לעשות את הRETURN.
אבל בכל מקרה, פשוט תשתמש בPDO ו fetchAll...
הרחבת MYSQL מתה מזמן...
http://il.php.net/manual/en/pdostatement.fetchall.php

איציק ברבי 30-05-12 11:13

class DB
{

function get_all_assoc($query) {
$query2 = mysql_query($query);
while($r[]=mysql_fetch_assoc($query2))
{
$r .= $r;
}
return $r;

}

בניה 30-05-12 13:12

הקוד הזה יעבוד:
PHP קוד:

class DB {
    public function 
get_all_assoc($query) {
        
$res mysql_query($query);
        
$records = array();
        while(
$record mysql_fetch_assoc($res)) {
            
$records[] = $record;
        }
        return 
$records;
    }


אבל שוב, חבל להתחיל לכתוב מחלקות DB ולעבוד עם קוד MYSQL של לפני 10 שנים

Ori The Man 30-05-12 22:47

תודה לשניכם!

בניה אני יבדוק את ענין ה PDO איך עובדים איתו והכל..
כמעט 3 שנים לא נגעתי ב PHP :)

נחסוך דאבל פוסט:
תכלס עדיף להגיד פונקציה סטאטית אם משתמשים בה הרבה ואין לה איזה הגדרות שצריך לתת לה (לדוגמה ה DB רק הכנסת QUERY)

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

אני צודק?

בניה 31-05-12 09:03

ציטוט:

נכתב במקור על ידי Ori The Man (פרסם 845641)
תודה לשניכם!

בניה אני יבדוק את ענין ה PDO איך עובדים איתו והכל..
כמעט 3 שנים לא נגעתי ב PHP :)

נחסוך דאבל פוסט:
תכלס עדיף להגיד פונקציה סטאטית אם משתמשים בה הרבה ואין לה איזה הגדרות שצריך לתת לה (לדוגמה ה DB רק הכנסת QUERY)

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

אני צודק?

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

AlmogBaku 04-06-12 20:23

היי, כמו שבניה ענה לך אתה מחזיר תגובה באמצע לולאה ובעצם עושה לה break במקום.

רק רציתי להגיב כדי לחדד את העניין עם שימוש בPDO או לחילופין mysqli.

אם אתה ממש מעוניין ללכת על שיטה פורצת דרך ולעבוד עם מחלקות אני ממליץ לך לעבוד עם activerecord :) זה כלי ממש מגניב! תגגל קצת ותמצא שהארכיטקטורה הזו מייושמת בכמה פרימוורקים מוכרים או בספרייה בשם php.activerecord(יש לי ניסיון איתה, ספריה מעולה!)
~ אלמוג


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

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