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

הוסטס - פורום אחסון האתרים הגדול בישראל (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 אם אני מבין נכון.
התשובה מורכבת, אבל בגדול - מה שהכי חשוב לי הוא הסדר והארגון, וכתוצאה מכך גם הנוחות. שמעתי שזה גם יותר מאובטח.


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

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