تالار گفتمان nCIS.ir

نسخه‌ی کامل: اولین کلاس PHP ام رو نوشتم ...
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
صفحات: 1 2 3
static بودن ربطی به کپسوله سازی نداره ...

ABZiko

(10-04-1394، 05:21 ب.ظ)MRPM نوشته: [ -> ]البته من فیلد name_$ رو خصوصی تعریف کردم. کد رو هم اجرا کردم مشکلی نداشت.

جالبه برای من اجرا نمی شه ...

ABZiko

(11-04-1394، 12:12 ق.ظ)arash691 نوشته: [ -> ]static بودن ربطی به کپسوله سازی نداره ...

پس چرا در اون پست فرموده بودین که public گذاشتن متغیر ها با مفهوم کپسوله سازی جور در نمی آد؟
ممنون
ببینید private و public (سطح دسترسی اعضای کلاس) بودن رو با static و non-static ( روش های تخصیص حافظه به اعضای کلاس ) بودن اشتباه نگیرید ...

ABZiko

ممنون، پس الان استفاده از Static برای متغیر های سراسری اشتباهه با نه؟ ببخشید زیاد سوال می پرسم ...
خواهش ... نمیشه بطور کلی جواب داد ، شرح مسئله و کد خودتون رو قرار بدید

ABZiko

این بخش کلاس :
    static function plusNumbers($number1,$number2){
        $sum = $number1+$number2;
        return $sum;
    }

و این هم متغیر :
    static $sum;
الان این مشکلی داره؟
یک سوال هم داشتم، چرا بعضی ها برای متغیر هاشون هم از static و هم private استفاده می کنن ؟
اگه از sum جای دیگه ای استفاده نمی کنید متد رو به اینصورت تغییر بدید :
static function plusNumbers($number1,$number2){
    return $number1+$number2;
}

ABZiko

ممنون، این متغیر های اضافی رو پاک کردم ...
ثوابت منظورتون اینه که متغیر یک مقدار ثابت داره ؟
بهتره در این مورد google کنید چون خودم شک دارم درست گفتم یا نه !

ABZiko

آقا ممنون، ببخشید اذیتتون کردم ...

ABZiko

پست اول آپدیت شد ...

ABZiko

پست اول دوباره بروزرسانی شد ...
وقتی فیلد استاتیک تعریف میکنید، باید با کمک ::self بهش دسترسی پیدا کنید وگرنه دارین در اصل یه متغیر محلی توی تابع میسازین. این مثال رو ببینید:
class Point
{
    private static $_x;
    private static $_y;

    public static function setX($x)
    {
        if($x >= 0 && $x < 640) {
            self::$_x = $x;
        }
    }

    public static function setY($y)
    {
        if($y >= 0 && $y < 480) {
            self::$_y = $y;
        }
    }

    public static function getX()
    {
        return self::$_x;
    }

    public static function getY()
    {
        return self::$_y;
    }

    public static function Display()
    {
        echo '<p>X = ' . self::$_x . ' , Y = ' . self::$_y . '</p>' . PHP_EOL;
    }
}

Point::setX(5);
Point::setY(7);
Point::Display(); // output: X = 5 , Y = 7

ABZiko

ممنون استاد که اطلاع دادین ...،یک سوال شما چرا در این مثال خودتون، برای متغیر ها private هم تعریف کردین ولی در تابع از public، استفاده کردین ؟
صفحات: 1 2 3