• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
ارور در متد های static
#1
سلام به همگی
آقا این کد چرا ارور میده؟میگه چرا از this استفاده کردی ؟خب مشکل اینه که وقتی متد به صورت استاتیک چرا نمیتونم ازش استفاده کنم؟ اینم ارورش:
Using $this when not in object context

کد پی‌اچ‌پی:
class PERSON{

    public 
$v1 1;
    protected 
$v2 1;

    public static function 
show(){
        return 
$this->v1 $this->v2;
    }
}

echo 
PERSON::show(); 
  پاسخ
تشکر شده توسط :
#2
سلام،
داخل یه متد که static تعریف شده، نمی‌تونی از متغیری استفاده کنی که استاتیک نیست.
(اینکه میگم تعریف دقیقی نیست، ولی خب منظور رو فک کنم میرسونه) متدهای static یه جورایی مستقل هستن... نمیشه داخلشون از $this استفاده کرد.
میتونی یکی از این ۲ حالت بنویسی.
حالت اول
کد:
class PERSON{

    public static $v1 = 1;
    protected static $v2 = 1;

    public static function show(){
        return static::$v1 + static::$v2;
    }
}

echo PERSON::show();
حالت دوم
کد:
class PERSON{

    public static $v1 = 1;
    protected static $v2 = 1;

    public static function show(){
        return self::$v1 + self::$v2;
    }
}

echo PERSON::show();

خود پی‌اچ‌پی فک کنم گفته بود حالت ۲ رو استفاده کنیم. ولی من از اولی استفاده میکنم، احساس میکنم خواناتره.
(کدها رو اونجا گذاشتم چون می‌تونی اجرا بگیری)
غایب
  پاسخ
تشکر شده توسط : Reza Y.P.Y
#3
(۱۳۹۵ اسفند ۲۸, ۰۲:۴۱ ق.ظ)Alaa نوشته: سلام،
داخل یه متد که static تعریف شده، نمی‌تونی از متغیری استفاده کنی که استاتیک نیست.
(اینکه میگم تعریف دقیقی نیست، ولی خب منظور رو فک کنم میرسونه) متدهای static یه جورایی مستقل هستن... نمیشه داخلشون از $this استفاده کرد.
میتونی یکی از این ۲ حالت بنویسی.
حالت اول
کد:
class PERSON{

    public static $v1 = 1;
    protected static $v2 = 1;

    public static function show(){
        return static::$v1 + static::$v2;
    }
}

echo PERSON::show();
حالت دوم
کد:
class PERSON{

    public static $v1 = 1;
    protected static $v2 = 1;

    public static function show(){
        return self::$v1 + self::$v2;
    }
}

echo PERSON::show();

خود پی‌اچ‌پی فک کنم گفته بود حالت ۲ رو استفاده کنیم. ولی من از اولی استفاده میکنم، احساس میکنم خواناتره.
(کدها رو اونجا گذاشتم چون می‌تونی اجرا بگیری)

آقا دمت گرم حله. یه چیز جدیدم یادم دادی اینکه میشه از static به جای self استفاده کنی. ایول دمت گرم
  پاسخ
تشکر شده توسط :
#4
من متد static را تغییر دادم ولی دوباره خطا میده میشه دوباره راهنمایی کنید
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان