فیلد های فقط خواندنی

این تاپیک 7 پاسخ و 3 مشارکت کننده دارد . آخرین آپدیت توسط :  مهرداد چگینی علی آبادی ،‏ 1 سال و 5 ماه پیش .

این تاپیک تاکنون 529 بازدید داشته است .

نویسنده پست
شنبه ، 4 جولای 2015     9:19 ق.ظ #


مهرداد چگینی علی آبادی

Subscriber
15 پست13 تاپیک

می خواهم در کلاسم فیلد فقط خواندنی داشته باشم. یعنی فیلدی که بشه اطلاعات را خواند ولی نشه محتوایش را تغییر داد.

خیلی برایم مهم است . می خواهم یکدفعه تابع اجرا شود و فیلد فقط خواندی مقدار دهی شود و هر وقت نتیجه را خواستم از این فیلد استفاده کنم اگر از تابع استفاده کنم زمان بر است و اگر از فیلد معمولی استفاده کنم چون می شود بطور مستقیم مقدارش عوض شود خیلی بدرت نمی خورد.

در سی شارپ چنین قابلیتی هست ، برخی فیلد ها سراسری پی اچ پی هم اینطور است . کسی می داند چطور این فیلدها در کلاس پیاده سازی کرد. یک نمونه تست شده برایم بیاورد.

در اینترنت گشتم یک مثال پیدا کردم ولی درست کار نمی کرد.

0  تشکر
شنبه ، 4 جولای 2015     11:57 ق.ظ #


آرمین نادری

ناظم
389 پست39 تاپیک

از readonly برای فیلدت استفاده کن

0  تشکر
شنبه ، 4 جولای 2015     1:57 ب.ظ #


مهرداد چگینی علی آبادی

Subscriber
15 پست13 تاپیک

می توانی یک مثال در پی اچ پی بزنی کی و کجا انجام دهم

0  تشکر
شنبه ، 4 جولای 2015     7:44 ب.ظ #


علی

ناظم
173 پست3 تاپیک

سلام

بدین صورت عمل کنید :

define("MYNAME", "Ali Faraji");

اطلاعات بیشتر در : http://go7.ir/1phtfnv

باتشکر

0  تشکر
شنبه ، 4 جولای 2015     10:34 ب.ظ #


مهرداد چگینی علی آبادی

Subscriber
15 پست13 تاپیک

define را نمی توان در کلاس تعریف کرد . توضیح کافی را در زیر می دهم

1- متغیری که بتوان در کلاس تعریف کرد

2- اعضا کلاس بتوانند مقدار آنرا تغییر داد

3- اما کلاس های دیگر و خود شی فقط قابلیت خواندن متغییر را داشته باشند نه نوشتن.

مثل فیلد زبان سی شارپ :
get   id
}
return _id; //only read
{

0  تشکر
یکشنبه ، 5 جولای 2015     6:06 ب.ظ #


آرمین نادری

ناظم
389 پست39 تاپیک

دوست عزیز من فکر کردم که میخوای فیلدی رو در فرم html فقط خوندنی کنی کنی که در اون صورت میشد از readonly استفاده کنی . بازم عذر میخوام 😉

برای این کاری که گفتی قبل از نام متغیر کلمه const رو قرار بده با این کار مقدار متغیر به هیچ وجه قابل تغیر نیست

موفق باشی :)

0  تشکر
یکشنبه ، 5 جولای 2015     9:53 ب.ظ #


مهرداد چگینی علی آبادی

Subscriber
15 پست13 تاپیک

مدرسین گرامی کسی بلد نیست در php در کلاس نویسی چطور فیلد های فقط خواتدنی ساخت که در هر لحظه مقدار جدید نمایش دهد ولی نتوان مقدارش عوض شود.

دوباره تاکید در داخل کلاس قابل نوشتن باشد ولی خارج از آن فقط خواندنی باشد

0  تشکر
دوشنبه ، 6 جولای 2015     12:03 ق.ظ #


مهرداد چگینی علی آبادی

Subscriber
15 پست13 تاپیک

بعد از کلی تلاش و جستجو توانستم پیدایش کنم. کلاس هایی که فیلد های خواندنی داشته باشند باید مراحل زیر را  دنبال کنند
class Car
};  protected $odometer = 0         public function drive( $miles )
 }    ($this->odometer += abs( $miles{   */(  public function __get( $field
}    (switch( $field
}    ;  case 'odometer'                ;return $this->odometer            ; default               ;( throw new Exception( 'Invalid property: ' . $field         {{{$subaru = new Car();$subaru->drive( 500 );echo $subaru->odometer; // 500$subaru->odometer = 0;  // Fatal error: Cannot access protected property
echo $subaru->odometer; // 500
1- متغیری که می خواهید فقط خواندی شود را از نوع مشاهده protected  قرار می دهید
2- متد سراسری کلاس __get فرا خوانی کرده و یک دستور switch اگر می خواهید چند فیلد را فقط خواندی کنید. در قسمت case آن نام فیلدی که می خواهید خواندنی شود سپس محاسبات و در آخر دستور return همراه متغییر فیلد 

1  تشکر
پست 1 تا 8 (از مجموع 8 پست)

برای پاسخ دادن به این تاپیک باید وارد سایت شوید .