static بودن ربطی به کپسوله سازی نداره ...
(10-04-1394، 05:21 ب.ظ)MRPM نوشته: [ -> ]البته من فیلد name_$ رو خصوصی تعریف کردم. کد رو هم اجرا کردم مشکلی نداشت.
جالبه برای من اجرا نمی شه ...
(11-04-1394، 12:12 ق.ظ)arash691 نوشته: [ -> ]static بودن ربطی به کپسوله سازی نداره ...
پس چرا در اون پست فرموده بودین که public گذاشتن متغیر ها با مفهوم کپسوله سازی جور در نمی آد؟
ممنون
ببینید private و public (سطح دسترسی اعضای کلاس) بودن رو با static و non-static ( روش های تخصیص حافظه به اعضای کلاس ) بودن اشتباه نگیرید ...
ممنون، پس الان استفاده از Static برای متغیر های سراسری اشتباهه با نه؟ ببخشید زیاد سوال می پرسم ...
خواهش ... نمیشه بطور کلی جواب داد ، شرح مسئله و کد خودتون رو قرار بدید
این بخش کلاس :
static function plusNumbers($number1,$number2){
$sum = $number1+$number2;
return $sum;
}
و این هم متغیر :
static $sum;
الان این مشکلی داره؟
یک سوال هم داشتم، چرا بعضی ها برای متغیر هاشون هم از static و هم private استفاده می کنن ؟
اگه از sum جای دیگه ای استفاده نمی کنید متد رو به اینصورت تغییر بدید :
static function plusNumbers($number1,$number2){
return $number1+$number2;
}
ممنون، این متغیر های اضافی رو پاک کردم ...
ثوابت منظورتون اینه که متغیر یک مقدار ثابت داره ؟
بهتره در این مورد google کنید چون خودم شک دارم درست گفتم یا نه !
آقا ممنون، ببخشید اذیتتون کردم ...
پست اول دوباره بروزرسانی شد ...
وقتی فیلد استاتیک تعریف میکنید، باید با کمک ::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
ممنون استاد که اطلاع دادین ...،یک سوال شما چرا در این مثال خودتون، برای متغیر ها private هم تعریف کردین ولی در تابع از public، استفاده کردین ؟