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

הוסטס - פורום אחסון האתרים הגדול בישראל (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=48964)

phpyo 04-07-07 17:12

בעיה לא מובנת - מחלקות PHP
 
שלום!

כתבתי את הקוד:

PHP קוד:

<?php
    
class lol
    
{

        var 
$info;
        
        function 
det($name,$age)
        {
            
$this->info['name']=$name;
            
$this->info['age']=$age;
        }

        function 
show()
        {
            echo 
"Hi! my name is ".$this->info['name']." and I am ".$this->info['age']." years old";
    
        }
    }

        
$lol = new lol('yosef','15');
        
$lol->show();
?>

והתכנון שלי היה שיצא הפלט:

PHP קוד:

Himy name is yosef and I am 15 years old 

אך הפלט יצא:

PHP קוד:

Himy name is and I am years old 

מה השגיאה פה?

תודה!

Meir 04-07-07 17:17

כי לא קראת לפונקציה det אם אתה רוצה להפעיל את ההצבה ברגע שאתה קורא למחלקה תשנה את הdet לlol או ל__construct

4ior 04-07-07 17:20

תשנה את det ל _lol

OSR 04-07-07 17:20

קוד מתוקן:
[
PHP קוד:

<?php
    
class lol
    
{

        var 
$info;
        
        function 
lol($name,$age)
        {
            
$this->info['name']=$name;
            
$this->info['age']=$age;
        }

        function 
show()
        {
            echo 
"Hi! my name is ".$this->info['name']." and I am ".$this->info['age']." years old";
    
        }
    }

        
$lol = new lol('yosef','15');
        
$lol->show();
?>


phpyo 04-07-07 18:49

האם שם פונקציית הבנייה חייב להיות זהה לשם המחלקה?

LosNir 04-07-07 19:04

ציטוט:

נכתב במקור על ידי phpyo (פרסם 513830)
האם שם פונקציית הבנייה חייב להיות זהה לשם המחלקה?

ב PHP4 כן, ב PHP5 זה __construct

קוד מתוקן:

PHP קוד:

<?php
    
class lol
    
{

        var 
$info;
        
        function 
__construct($name,$age)
        {
        
$this->lol($name,$age);
        }

        function 
lol($name,$age)
        {
            
$this->info['name']=$name;
            
$this->info['age']=$age;
        }

        function 
show()
        {
            echo 
"Hi! my name is ".$this->info['name']." and I am ".$this->info['age']." years old";
    
        }
    }

        
$lol = new lol('yosef','15');
        
$lol->show();
?>

ככה יעבוד לך גם ב PHP4 וגם ב PHP5, תהנה.

phpyo 04-07-07 19:28

שאלה : מה הכוונה שאומרים "יצירת מופע של מחלקה" ?

Source 04-07-07 20:06

קוד:

$something = new className();
$something הוא מופע של המחלקה className, ובעזרת מילת המפתח new יצרתי אותו.

phpyo 05-07-07 00:20

אני יודע את התחביר, לא הבנתי מה מטרתו.

Source 05-07-07 00:23

מטרתו?
השאלה היא בעצם מה מטרת כל הOOP אם אני מבין נכון.
התשובה מורכבת, אבל בגדול - מה שהכי חשוב לי הוא הסדר והארגון, וכתוצאה מכך גם הנוחות. שמעתי שזה גם יותר מאובטח.

phpyo 05-07-07 00:25

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

Source 05-07-07 00:28

אני מניח שאתה יודע מה זה מחלקה.
מופע של מחלקה הוא השימוש המעשי של המחלקה בתוכנית. בלי מופעי מחלקה אלא רק הגדרת מחלקה לא עשית ולא כלום... ברגע שיצרת מופע מחלקה ניצלת (השתמשת) את הגדרות המחלקה שהגדרת, וכעת משתנה מסוים 'מקבל' את ההגדרות שהגדרת למחלקה (אני מתכוון למשתנים, פונ' וכו').


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

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