دلیل عدم static کردن بعضی از توابع مانند find دز yii
دلیل عدم static کردن بعضی از توابع مانند find دز yii چیه؟ آخه توابعی از این دست هیچ نیازی نداذند که از مدلمون نمونه داشته باشیم. چرا ما باید برای استفاده از این توابع مجبور باشیم ابتدا با استفاده از تابع استاتیک model یه نمونهی خالی از مدلمون ایجاد کنیم تا بتوانیم از این تپابع استفاده کنیم؟
اگر اشتباه میگم که منو از گمراهی در بیارید
نقل قول: دلیل عدم static کردن بعضی از توابع مانند find دز yii
نقل قول:
نوشته شده توسط
mojtaba.baghban
دلیل عدم static کردن بعضی از توابع مانند find دز yii چیه؟ آخه توابعی از این دست هیچ نیازی نداذند که از مدلمون نمونه داشته باشیم. چرا ما باید برای استفاده از این توابع مجبور باشیم ابتدا با استفاده از تابع استاتیک model یه نمونهی خالی از مدلمون ایجاد کنیم تا بتوانیم از این تپابع استفاده کنیم؟
اگر اشتباه میگم که منو از گمراهی در بیارید
با سلام
به دلیل اینکه اگر تابعی static تعریف شود ممکن است بین صفحات share شود. که از سمت apache هستش.
نقل قول: دلیل عدم static کردن بعضی از توابع مانند find دز yii
نقل قول:
به دلیل اینکه اگر تابعی static تعریف شود ممکن است بین صفحات share شود
خوب الان مشکل چیه؟ خاصیت static بودن و خوبیش همینه که ما تو هر صفخهای بودن نیاز به اینکه از مدلمون نمونه بسازیم بتونیم از اون استفاده کنیم.
فکر کنم درست متوجه منظورتون نشدم که ممکن است بین صفحات share شود منظورتون چیه. به هر حال هر جا که فایلی که مدلمون توشه رو include کرده باشیم ما در اون صفحه به تمام خاصیت و متدهای استاتیک عمومی اون مدل دسترسی داریم و اگه یه نمونه از مدل بسازیم به تمام خاصیت و متدهای غیر استاتیک عمومی
اون نیز دسترسی خواهیم داشت.
نقل قول:
که از سمت apache هستش.
متوجه این نمیشم
نقل قول: دلیل عدم static کردن بعضی از توابع مانند find دز yii
ببینید یک فکر اشتباه که متاسفانه اولش من هم داشتم این بود که apache با ورود هر کاربر به سایت یک thread آزاد می کند، بعدها فهمیدم اگر کاربری از آپاچه index.php رو بخواهد آپاچه بعد از کامپایل و ایجاد html برای ارسال سمت کلاینت بررسی می کند که در آن لحظه چند کاربر دیگه index.php رو همزمان صدا زده اند و بجای اینکه برای بقیه کاربران هم این کار را انجام دهد همین صفحه رو تحویل آنها می دهد و بار پردازشی رو کم می کند، خوب پس اگر ما یک کلاس رو new کنیم برایش حافظه جدا آزاد کرده ام و مختص آن Session هم می باشد.
همچنین ما می دانیم که متغیر های static یکبار تعریف و در حافظه باقی می مانند تا session بسته شود. در مورد توابع اگر تابعی static باشد ممکن است بین این کاربر و آن کاربر مشترک شود و در اصطلاح share شود.
منبع صحبت های خودم آقای مهرداد کیانیان استاد بزرگ من هستند که سر کلاس این حالت رو برای ما شبیه سازی کردند. و دیدیم که چه مشکل مهلکی ممکن است پیش بیاید.
اگر از دوستان نظری دارند و این حرفم رو نقض می کنند لطفا بازگو کنند.
نقل قول: دلیل عدم static کردن بعضی از توابع مانند find دز yii
ممنون از جوابهای کاملتون
الان متوجه شدم
حالا به نظر شما آیا آپاچی نباید این رویه رو تغییر بده و واسه هر درخواستی یه thread جدا در نظر بگیره؟ آخه مگه با این کارش چقدر بار پردازشی رو کم میکنه مگر اینکه سایت اونقدر پربازدید باشه که همزمان درخواستهای یکسان زیادی برسه؟
آیا تو تنظیمات آپاچی این آپشن وجود نداره که این رویه رو تغییر داد؟
نقل قول: دلیل عدم static کردن بعضی از توابع مانند find دز yii
البته من این رو هم بگم شاید دیگه این مشکلات وجود نداشته باشند و اینکه برای هر کاربر session جدا در نظر گرفته می شود.
آپاچه یک بنیاده دوست عزیز، انقدر هم مهندس داره که تحلیل کنند آیا این کار خوبه یا بد! در ضمن فکر می کنید آپاچه همون اون بدون اشکال بود؟ می دونید چقدر باگ براش ارسال شده تا به این استاندارد رسیده؟
در مورد تنظیمات واقعا اطلاعی ندارم شرمنده دوست عزیز.
نقل قول: دلیل عدم static کردن بعضی از توابع مانند find دز yii
ممنون از وقتی که گذاشتی
پیروز باشی
نقل قول: دلیل عدم static کردن بعضی از توابع مانند find دز yii
تو نسخه ۲ فریمورک yii توابعی مانند find که منطقا باید استاتیک باشن رو استاتیک تعریف کردند
نقل قول: دلیل عدم static کردن بعضی از توابع مانند find دز yii
Post::model()->find();
از طریق پروپرتی model که استاتیک می باشد می توان به تابع find دسترسی داشت
نقل قول: دلیل عدم static کردن بعضی از توابع مانند find دز yii
نقل قول:
نوشته شده توسط
mohsen_31369
Post::model()->find();
از طریق پروپرتی model که استاتیک می باشد می توان به تابع find دسترسی داشت
تو yii2 دیگه اینجوری نیست و خیلی سرراست مینویسی
Post::find();
نقل قول: دلیل عدم static کردن بعضی از توابع مانند find دز yii
البته استاتیک تعریف نشدن متدها باعث می شه دست آدم برای استفاده از inheritance و override کردن متدها باز باشه!