PDA

View Full Version : بحث و گفتگو در مورد PHP 7



behnamy01
سه شنبه 18 فروردین 1394, 19:45 عصر
سلام دوستان، این تاپیک رو ایجاد کردم تا چند تا سوال در مورد PHP 7 بپرسم و همچنین مکانی باشه برای بحث و گفتگو در مورد PHP 7

1- من چند مقاله توی چند ماه اخیر در مورد تغییرات صورت گرفته توی PHP7 خوندم، ولی الان که فکر میکنم چیزی یادم نمیاد! از بس که کتابی نوشته شده بود، اینجا میخوایم به زبون خودمون صحبت کنیم :دی
میدونید تغییرات چی هست؟ چه بهبود هایی قراره اتفاق بیفته؟

من شنیده بودم سرعتش قراره خیلی بهتر بشه، مثل اینکه OPACHE پیش فرض فعاله، و یک چیز دیگه ای هم که خونده بودم این بود که قراره مثل فریمورک های Phalcon یا yaf از base کلا c extension باشه! اینجوری حداقل سرعتش 5-6 برابر بهتر میشه، اینکه شایعه باشه یا نه رو دیگه نمیدونم خودم هم! c extension هم اگر باشه، هاستینگ که php جدید رو نصب کنه دیگه تمومه و نیازی نیست مثل فریمورک های Phalcon منت هاستینگ رو کشید!

__________________________________________________ ____________
2- اصلا چرا قراره به جای php 6 یک دفعه اسمش بشه 7 ؟ تغییرات خیلی زیاده؟

__________________________________________________ ____________
3- تغییرات اینقدر زیاد هست که کدهای php با ورژن های 5 دیگه اصلا روی 7 اجرا نشه؟ اگر اینجوری باشه به نظر من خیلی بد میشه و یکی از نقاط قوت php که توی این همه سال بدست آورده و باعث تفاوت زیادش با بقیه زبون ها شده، یعنی ویژگی کدها و کتابخانه های آماده زیاد، بی معنی میشه اینجوری! و امکان در خظر افتادن محبوبیت php زیاد میشه!

__________________________________________________ ____________
4- به محض ارائه ورژن جدید آیا شما ازش استفاده میکنید؟ من خودم رو بعید میدونم که استفاده کنم اگر تغییرات خیلی زیاد باشه! چون معمولا آدم ها تا مدتی نسبت به یک چیز جدید جبهه میگرن!

MohammadReza1994
سه شنبه 18 فروردین 1394, 20:05 عصر
بعد رلیز شدن کسی طرفش نمیره. چرا؟ چون هر چه قدرم روش کار شده باشه، باز باگ خواهد داشت و هنوز تو پروژه های بزرگ تست نشده. هنوزم که هنوزه با اونکه نسخه های ۵.۵ و ۵.۶ موجوده ولی خیلی از ارایه دهنده های خدمات وب چه ایرانی چه خارجی از نسخه ۵.۳ و ۵.۴ استفاده میکنن.

rezakho
سه شنبه 18 فروردین 1394, 22:56 عصر
در مورد نام، گفته شده در یک رای گیری تیم توسعه دهنده، بر اساس سند RFC نسخه جدید، نام نسخه 7 رای بیشتری آورده و البته هنوز تا منتشر شدن نسخه پایدار، این نام قطعی نیست!
در حال حاضر نسخه های DEV موجود هست و قابل استفاده.
طبق جدول زمان بندی ماه اکتبر 2015 برای انتشار اولین نسخه پایدار مشخص شده.
بیشتر تغییرات روی ساختار زبان PHP هست نه کتابخونه ها و البته تغییراتی در کتابخونه ها هم رخ داده.

مهمترین ویژگی هایی که تا به حال ذکر شده این هاست:

1- بهبود کارایی
سعی شده این نسخه نسبت به نسخه های 5 بهبود چشم گیری داشته باشه و حداقل بتونه به نسخه HHVM فیسبوک برسه.

2- موتور JIT
PHP 7 حتمالا با موتور JIT عرضه خواهد شد، این ویژگی باعث میشه کد های opcode موتور زند به کد بومی ماشین مورد نظر تبدیل بشه که سرعت اجرای برنامه رو بشدت افزایش خواهد داد.

3- سینتکس
سینتکس نسخه 7 تغییرات محسوسی کرده، البته بیشتر تغییرات با نسخه 5 سازگار هست.
برخی از این تغییرات عبارتند از:
استفاده از انواع داده های ساده در تعریف پارامترها
دسترسی های پشت سرهم () و {} و [] و :: و ...
عملگرهای جدید
فراخوانی متدها به صورت مستقیم روی داده های ساده مثل رشته ها
تغییر نحوه تفسیر در برخی عبارت ها و تقدم عملگرها
...

4- برنامه نویسی نامتقارن
بهبود و پیدایش ویژگی های جدید که امکان برنامه نویسی نامتقارن رو ایجاد می کنه.
این ویژگی مناسب برای نوشته برنامه های رویدادگرا بدون بلوکه کردن منابع مثل پورت، فایل، پایگاه داده و ... هست، همچنین برای اجرای وظایف همزمان برای یک درخواست!، چیزی شبیه NodeJs!

5- چندریسمانی
احتمالا ویژگی های جدید برای کار در وب سرور های چند ریسمانی و استفاده از این قابلیت در PHP اضافه خواهد شد. اگرچه PHP قبلا هم این امکان رو داشته، ولی در نسخه 7 یا 8، این ویژگی قابل استفاده در مسائل واقعی خواهد بود.

نتیجه نهایی
تمام ویژگی های بالا در حال حاضر جزو امکانات اولیه HHVM هست و اگر PHP نتونه خودش رو به HHVM برسونه، احتمال مرگش! زیاد خواهد بود. این تلاش ها برای عقب نموندن PHP از سایر اعضای خانواده اش هست.

rezakho
سه شنبه 18 فروردین 1394, 23:05 عصر
بعد رلیز شدن کسی طرفش نمیره. چرا؟ چون هر چه قدرم روش کار شده باشه، باز باگ خواهد داشت و هنوز تو پروژه های بزرگ تست نشده. هنوزم که هنوزه با اونکه نسخه های ۵.۵ و ۵.۶ موجوده ولی خیلی از ارایه دهنده های خدمات وب چه ایرانی چه خارجی از نسخه ۵.۳ و ۵.۴ استفاده میکنن.

دلیل استفاده نکردن از نسخه های جدید باگ نیست!
اولا باگ های شناخته شده نسخه های قبلی قطعا در نسخه های جدید نیست و نباید باشه و دوما، باگ وقتی آشکار میشه که نرم افزار زیر کار بره! وقتی هنوز استفاده نشده که باگی مشخص نیست!
ممکنه بعضی ها بهانه باگ های احتمالی رو بیارند که خوب طبیعیه، بروزکردن سرور با چندصد سایت فعال کار عاقلانه ای نیست، ضمن اینکه با وحود نسخه 5.4 فعلا نیازی به نسخه بالاتر برای برنامه های فعلی احساس نمیشه.
چند ماه پیش هم عده ای می گفتند کو تا نسخه 5.4 بیاد! اما بلافاصله که ابزارها به نسخه 5.4 مهاجرت کردند و درخواست هاست 5.4 هم زیاد شد، همه توی بروزکردن نسخه از هم سبقت می گرفتند.

freeman99
چهارشنبه 19 فروردین 1394, 00:00 صبح
کاش توی نسخه های جدید یکسری از این طراحی های مسخره ای که توی نسخه های قبلی داشتن رو اصلاح کنن، چون واقعا دردسرسازه و به اعتبار PHP هم صدمه زده.
من اخیرا توی پروژهء خودم مجبور شدم بیشتر == ها رو به === تبدیل کنم و به تابع in_array هم آرگومان سومش رو اضافه کنم، و جالب اینکه متوجه حداقل یک مورد SQL Injection در برنامه شدم که بخاطر همین منطق غیراستاندارد و غیرمنتظره PHP در عملگرهای مقایسه در برنامم بوجود آمده بود. اون کد در هر زبان دیگری در دنیا که من میشناسم اگر نوشته شده بود منجر به چنین حفرهء امنیتی نمیشد؛ فقط عملگرهای مقایسه PHP هستن که چنین منطق عجیبی دارن و در وادی هوشمندبازی اینقدر افراط کردن.
بنظر من این قضیه یک ضعف مهم در PHP است و با وجود هزینه ای که داره باید به فکر تغییرش باشن. بنظرم یجورایی مثل داستان Register Globals هست که باوجود اینکه سالها در PHP بعنوان یک ویژگی محوری بود و بیشتر افراد ازش استفاده میکردن (و حتی طرفداران خودش رو هم داشت) ولی دست آخر مجبور شدن حذفش کنن. یه تصمیم طراحی غلط که گرفته میشه واقعا چیز بدیه چون وارد زبان که شد بعدا نمیشه همینطوری راحت حذفش کرد چون تبعات و هزینهء زیادی داره و مشکلات زیادی ایجاد میکنه.

behnamy01
چهارشنبه 19 فروردین 1394, 00:17 صبح
کاش توی نسخه های جدید یکسری از این طراحی های مسخره ای که توی نسخه های قبلی داشتن رو اصلاح کنن، چون واقعا دردسرسازه و به اعتبار PHP هم صدمه زده.
من اخیرا توی پروژهء خودم مجبور شدم بیشتر == ها رو به === تبدیل کنم و به تابع in_array هم آرگومان سومش رو اضافه کنم، و جالب اینکه متوجه حداقل یک مورد SQL Injection در برنامه شدم که بخاطر همین منطق غیراستاندارد و غیرمنتظره PHP در عملگرهای مقایسه در برنامم بوجود آمده بود. اون کد در هر زبان دیگری در دنیا که من میشناسم اگر نوشته شده بود منجر به چنین حفرهء امنیتی نمیشد؛ فقط عملگرهای مقایسه PHP هستن که چنین منطق عجیبی دارن و در وادی هوشمندبازی اینقدر افراط کردن.
بنظر من این قضیه یک ضعف مهم در PHP است و با وجود هزینه ای که داره باید به فکر تغییرش باشن. بنظرم یجورایی مثل داستان Register Globals هست که باوجود اینکه سالها در PHP بعنوان یک ویژگی محوری بود و بیشتر افراد ازش استفاده میکردن (و حتی طرفداران خودش رو هم داشت) ولی دست آخر مجبور شدن حذفش کنن. یه تصمیم طراحی غلط که گرفته میشه واقعا چیز بدیه چون وارد زبان که شد بعدا نمیشه همینطوری راحت حذفش کرد چون تبعات و هزینهء زیادی داره و مشکلات زیادی ایجاد میکنه.

خب شما که این ایرادات رو میبینید از سایت php بهشون اطلاع بدید تا توی نسخه جدید اگر میشه اعمال کنن، لینک این موارد مثل ارائه پیشنهاد یا گزارش bug رو هم از سایت php رو به ما بدید اینجا تا کاربرای دیگه هم استفاده کنن.

freeman99
چهارشنبه 19 فروردین 1394, 00:35 صبح
قبلا تمام این کارها توسط خیلی ها انجام شده و بنده دیدم. خودمم مدتها قبل یک مورد bug report داشتم.
یه مشکل اینه که اینا به معنای معمول باگ نیستن، بلکه طراحی اشتباه هستن. یعنی طراح یا طراحان یه منطقی داره یه برآوردی داره از درستی و سود و ضرر یک منطق و رفتار خاصی، که خودش فکر میکنه درسته. بنابراین شما فقط گزارش بکنی و بگی باگه فایده نداره، اون میگه باگ نیست ما میدونیم و این یک feature هست و شما جور دیگه میخوای هم روش دور زدنش اینطوره و اونطوره. مسئله میتونه ابعاد شخصیتی هم داشته باشه، یعنی طرف آدم مغرور یا خودسری باشه و در زمینهء طراحی زبان تجربه و تخصص کافی نداشته باشه و از منابع و متخصصان دیگه هم مشورت و کمک کافی نگرفته باشه یا بهرصورت نظر اونا رو در نهایت قبول نکنه. اینجا مشکل پیچیده میشه، چون بحث تخصصی و ظریفی است و نیاز به بحث و تحلیل و تحقیق گسترده تری داره با حضور افراد بقدر کافی مطلع و داری تخصص و بینش و آگاهی در امر استانداردها و طراحی زبان.
من حتی این مسئله رو در stackoverflow مطرح کردم (http://stackoverflow.com/questions/28936084/php-a-fractal-of-bad-design)، اما اومدن تاپیک منو برچسب primarily opinion-based زدن، یعنی بنظرشون این مسئله ماهیتا بیشتر بر پایهء نظر شخصی هست و نه مدارک و استدلالهایی که بشه روش به یک اجماع یا اکثریت حداقلی رسید (دارای قابلیت بحث تخصصی و علمی و منطقی ندونستن). هرچند بنظر شخص من این مسئله به هیچ وجه تا این حد opinion based نیست! مسئلهء طراحی زبان بهرحال یک رشته و تخصصه واسه خودش و قابل بحث و تحلیله، ولی سایت و جایی مخصوص این کار پیدا نکردم.
بهرحال تا قبل از اینکه تاپیک بسته بشه هیچکس نیامد کوچکترین دفاعی از PHP در این زمینه بکنه، و دو نفری که نظر دادن هم درواقع نظر منو تایید کردن!

mostafabibin
چهارشنبه 19 فروردین 1394, 10:34 صبح
بعد از انتشار کسی به سمتش نمیره؟ دقیقا بر چه اساس و منطقی شما به این نتیجه رسیدی؟

دلیل شماره 7 این هست که نسخه 6 به دلیلی تاریخی نحس هست و PHPCommunity در اقدامی (بیشتر جالب) شماره 7 رو برای نسخه بعدی انتخاب کرد (ویرایش: البته یکی از دلایل)

نسخه بعدی از موتور NG استفاده می کنه که به معنای نسل بعدی(یا نسل جدید) هست (Next Generation). این موتور بسیار بهینه شده و در واقع در رقابت با موتور فسبوک به این سمت اومده که خبر بسیار خوبی محسوب میشه.

Type Casting هم بالاخره داره چهره جدی به خودش می گیره. خوب خیلی خوبه که میشه:


function increment(int $a): int {...}


در ضمن، آقای Andi Gutmans (http://www.zend.com/en/company/leadership#Andi%20Gutmans)، موسس Zend اعلام کرده که phpng از HVVM سریع تر هست.

اما در مورد library و کد های آماده. این کدها اگر از ویژگی های به روز php استفاده کرده باشند، منظورم نسخه های 5.4 و 5.3 به عنوان حداقل ورژن هست، به مشکل بر نمی خورند. اما، هر کتابخانه و کد آماده ای که معتبر باشه، به روز خواهد شد و از type casting استفاده خواهد کرد و برنامه نویس های (معمولا تنبل) php رو وادار به استفاده و اعمال استانداردها خواهد کرد. استاندارهایی که خیلی دیر و کند توسط برنامه نویس ها به کار گرفته میشند و معمولا هم تا مجبور نباشند از اون استفاده نمی کنند.

آدم ها معمولا نباید در دنیای مدرن و خصوصا دنیای open source نسبت به چیز جدیدی جبهه بگیرند! به نظرم بهتر هست یک بازنگری در این مساله داشته باشید.

freeman99
چهارشنبه 19 فروردین 1394, 10:42 صبح
دلیل شماره 7 این هست که نسخه 6 به دلیلی تاریخی نحس هست
130134
بابا توی علم و فن و تخصص هم خرافات؟!
آدمهای علمی نباید اینقدر خرافاتی باشن.
من به هیچکدام از این خرافات اعتقادی ندارم و در زندگیم هم توجهی بهشون نکردم هیچ واقعه بد و مشکل خاصی هم مشاهده نکردم تاحالا.
همش تلقین و تصورات خود آدمهاست.

mostafabibin
چهارشنبه 19 فروردین 1394, 10:56 صبح
130134
بابا توی علم و فن و تخصص هم خرافات؟!
آدمهای علمی نباید اینقدر خرافاتی باشن.
من به هیچکدام از این خرافات اعتقادی ندارم و در زندگیم هم توجهی بهشون نکردم هیچ واقعه بد و مشکل خاصی هم مشاهده نکردم تاحالا.
همش تلقین و تصورات خود آدمهاست.

دوست عزیز، معلومه که خرافات جایی نداره. بنده توی پرانتز نوشتم در اقدامی جالب. دقیقا مشابه همین کار رو مایکروسافت برای انتشار نسخه 10 ویندوز انجام داد.
این کارها برای ایجاد تغییر در روند یکسان ایجاد میشه و دلیلی هم برای هست:
تغییر در نگرش، یا تغییرات بسیار زیاد

behnamy01
چهارشنبه 19 فروردین 1394, 12:38 عصر
Type Casting هم بالاخره داره چهره جدی به خودش می گیره. خوب خیلی خوبه که میشه:


function increment(int $a): int {...}


.

ببینید php اگر قرار باشه مثل اکثر زبان های دیگه strict type میشه و باید نوع integer یا string و غیره... رو خود برنامه نویس مشخص کنه نه php ، خب اگر همین موضوع ساده اتفاق بیفته چجوری قراره کدها و کتابخونه هایی که با ورژن های قبلی php ساخته شدن، با ورژن جدید سازگار باشن؟!

MMSHFE
چهارشنبه 19 فروردین 1394, 13:20 عصر
اشتباه نکنید. تا جایی که میدونم، قرار نیست PHP یک زبان Strict Type بشه، بلکه شما میتونید هرجا خواستین، خودتون نوع پارامتر و مقدار بازگشتی و... رو تعیین کنید و درصورتی که متغیری با نوع دیگری ارسال بشه، خطا تولید خواهد شد.

Unique
چهارشنبه 19 فروردین 1394, 15:48 عصر
دقیقا مشابه همین کار رو مایکروسافت برای انتشار نسخه 10 ویندوز انجام داد.
البته مایکروسافت برای عدم تداخل با نسخه های ۹۵ و ۹۷ و ۹۸ ویندوزش که ۹ داره این کار را کرد.

aliphp1
چهارشنبه 19 فروردین 1394, 19:09 عصر
اشتباه نکنید. تا جایی که میدونم، قرار نیست PHP یک زبان Strict Type بشه، بلکه شما میتونید هرجا خواستین، خودتون نوع پارامتر و مقدار بازگشتی و... رو تعیین کنید و درصورتی که متغیری با نوع دیگری ارسال بشه، خطا تولید خواهد شد.

به نظرم عاقلانه ترین کار هم همین هست

mostafabibin
جمعه 21 فروردین 1394, 01:34 صبح
PHP در تنظیمات ini به شما اجازه میده که تعیین کنید. به صورت پیش فرض strict type نیست. مساله این هست، که منظورتون از کدها چی هست؟ کدهای معتبر همه گی به روز خواهند شد. کدهای شخصی هم که هیچ لزومی نداره برای ورژن 8 یا 9 پیشتیبانی بشند. در نسخه 7 که قطعا و احتمالا نسخه های 7.* بدون مشکل با type کدهای قدیمی تر رو اجرا می کنند. اما برای نسخه های اصلی بعدی، هیچ تضمینی نیست.

در مورد اون دوستمون که گفت ویندوز 10 دلیلش چی بود: یکی از دلایلش این هست که عدد 9 در ژاپن نحس هست و مایکروسافت مشتریان بسیاری در ژاپن داره.

hamedarian2009
جمعه 21 فروردین 1394, 09:55 صبح
در مورد اون دوستمون که گفت ویندوز 10 دلیلش چی بود: یکی از دلایلش این هست که عدد 9 در ژاپن نحس هست و مایکروسافت مشتریان بسیاری در ژاپن داره.

هم ایمیل های زیادی از ژاپن شده که عدد ۹ نحس است و این اسم نزارین و هم خود مایکروسافت به خاطر تشابه با نسخه های ۹۸ و .. این کارو کرده

من هم یکدفعه تعجب کردم وقتی شنیدم PHP7 داره میاد گفتم پس PHP6 چی شد مثل اینکه این همونه اگر برای خرافات باشه واقعا جالبه این همه دانشمند هم اسیر این چیزا میشن!

MMSHFE
جمعه 21 فروردین 1394, 10:24 صبح
وای خدا! چند روزی داشتم تاپیک رو نگاه میکردم ببینم کی دست از این حدس و گمانها میکشین ولی انگار قراره همش تو حاشیه باشین. از جناب یونیک و اشپیلن حداقل انتظار داشتم مستدل تر صحبت کنن. خود سایت PHP این موضوع رو توضیح داده:
https://wiki.php.net/rfc/php6
هیچ شایعه و خرافه ای هم در کار نیست. دلایلشونم بنظرم کاملاً منطقی بود.

Unique
جمعه 21 فروردین 1394, 23:07 عصر
البته من در مورد ویندوز گفتم. در مورد PHP 7 و دلایلش چیزی نخونده بودم.
اطلاعاتم هم از این دو تا سایت بود :
http://www.pcworld.com/article/2690724/why-windows-10-isnt-named-9-windows-95-legacy-code
http://www.extremetech.com/computing/191279-why-is-it-called-windows-10-not-windows-9

اما لینکی که از دلایل رفتن به PHP7 گذاشتین توش خرافات هست :

Version 6 is generally associated with failure in the world of dynamic languages. PHP 6 was a failure; Perl 6 was a failure. It's actually associated with failure also outside the dynamic language world - MySQL 6 also existed but never released. The perception of version 6 as a failure - not as a superstition but as a real world fact (similar to the association of the word 'Vista' with failure) - will reflect badly on this PHP version.

MMSHFE
شنبه 22 فروردین 1394, 00:11 صبح
تنها جایی که میشه خرافه حسابش کرد، یکی اینجاست:

Version 6 is generally associated with failure in the world of dynamic languages. PHP 6 was a failure; Perl 6 was a failure. It's actually associated with failure also outside the dynamic language world - MySQL 6 also existed but never released. The perception of version 6 as a failure - not as a superstition but as a real world fact (similar to the association of the word 'Vista' with failure) - will reflect badly on this PHP version.
که گفته شده واقعاً بعنوان یه خرافه پرستی روش حساب نکردن ولی بعنوان یک واقعیت که در دنیا چندبار اتفاق افتاده بهش نگاه میکنن و این موضوع باعث میشده تأثیر بدی روی این نسخه PHP داشته باشه (بنظر خودم منظورشون در دید کاربران بوده).
یکی دیگه هم اینجاست:

As a special non serious bonus, 7 is perceived as a lucky number in both the Western world and Chinese culture. A little bit of luck never hurt anybody. http://en.wikipedia.org/wiki/Numbers_in_Chinese_culture (no, we're not truly seeing it as a real advantage - the case for 7 is very strong without it).
که گفته بعنوان یک امتیاز نه چندان جدی، 7 یک عدد خوش شانسی توی فرهنگ غرب و فرهنگ چینی محسوب میشه و کمی شانس به هیچ کسی آسیب نمیرسونه. البته در آخر گفتن که بعنوان یک امتیاز واقعی بهش نگاه نمیکنن و سایر مزایای نامگذاری نسخه جدید با عدد 7 که بهش توی مقاله اشاره کردن، بدون این موضوع هم خیلی قویه.

MMSHFE
شنبه 22 فروردین 1394, 00:13 صبح
البته من در مورد ویندوز گفتم. در مورد PHP 7 و دلایلش چیزی نخونده بودم...

ویندوز و مایکروسافت که تکلیفشون معلومه و ارزش بحث ندارن :چشمک:

freeman99
شنبه 22 فروردین 1394, 08:03 صبح
از جناب یونیک و اشپیلن حداقل انتظار داشتم مستدل تر صحبت کنن.
من حرفی نزدم که ربطی به استدلال داشته باشه. یه نفر یه ادعایی کرد منم گفتم که خیلی مسخره است (با این فرض که ادعاش درست بوده باشه). برام مهم نبود که وقت و انرژی صرف کنم برم تحقیق کنم ببینم درست هست یا نه. بقیش هم اصلا برای من اهمیتی نداره بطور کلی دنبال این بحث PHP7 نیستم چون دلیلی پیدا نمیکنم که اهمیت بدم! شما همین فناوریهای روز رو درست یاد بگیرید استفاده کنید بعید میدونم مشکلی باشه. توی رشتهء ما وقتی برای حرف زدن از آینده و دل خوش بودن به این مسائل نیست باید بر اساس شرایط و امکانات و اطلاعات روز زندگی و برنامه ریزی کرد. حالا 7 اش اومد خب مگه چیه، آدمی که حرفه ای باشه سه سوت سر و تهش رو درمیاره و یاد میگیره و میتونه استفاده کنه.

freeman99
شنبه 22 فروردین 1394, 08:07 صبح
ویندوز و مایکروسافت که تکلیفشون معلومه و ارزش بحث ندارن :چشمک:
PHP که اصلا عدد این حرفا نیست ورژن 70 هم باشه ارزش بحث نداره.
برن واسه خودشون type juggling درست کنن دلشون خوش باشه :لبخند:
یه روزی انتقام بلایی که سر عملگرهای مظلوم و بی پناه == و ‎!=‎ آوردن ازشون گرفته میشه حالا ببین خدا کی میزنه توی کمرشون :قهقهه:

freeman99
شنبه 22 فروردین 1394, 08:49 صبح
یعنی ببین برنامه نویس باید چقد خوف باشه که امکانات زبان واسش کم بیاد!
مثلا من خودم :لبخند: یجا نیاز به متدهای getter و setter واسه پراپرتی های استاتیک داشتم که بعد متوجه شدم PHP همچین چیزی نداره!
حالا شاید اینو در نسخهء 7 یا نسخه های جدیدتری اضافه کنن، ولی بهرحال خب چه سود، من الان نیاز دارم الان باید برنامم رو بنویسم. البته به یه شکل دیگه نوشتم و مشکل حادی نبود و حل شد.
اینه که میگم حرف زدن از آینده بیهوده است! باید ببینی الان چه امکاناتی هست خوب یاد بگیری خوب استفاده کنی.
بعدش تازه یه زبانی که میاد اغلب اینم که با چه سرعتی همه آپگرید کنن برن سراغش مهمه در عمل. مثلا سی++ هم نسخه های جدید پیشرفته ای داره، ولی همه کار رو همه جا که نمیتونی با آخرین نسخه های یک زبان که بخصوص تغییرات گسترده و عمیق یا رادیکالی داشته باشن انجام بدی! مثلا حجم اعظم کتابخانه ها و کدها و برنامه های قبلی که هست با نسخه های قبلی است، بنابراین شما نمیتونی از امکانات نسخهء جدید در اونا سود چندانی ببری. اینکه میخوای کار تیمی بکنی شرکتی جایی بری اصلا از چه نسخه و اجزای دیگری استفاده کنن استانداردشون چی باشه هم مهمه. خلاصه میگه جوجه رو آخر پاییز میشمارن! زیاد عجله نباید داشت. الانه طوری شده که پیشبینی آینده حتی برای کوتاه مدت هم کار دشواریه چون خیلی پارامترها و پیچیدگی ها و ظرافت ها هست و خیلی چیزا رو نمیشه از قبل بصورت مطمئن و دقیقی پیشبینی کرد. پرداختن به آینده بنظر من در خیلی موارد کار بیهوده ایست! بخصوص که همین الانش هم اینقدر چیز واسه یاد گرفتن هست که بگم حتی اونایی که فکر میکنن حرفه ای هستن خیلی چیزا رو نمیدونن شاید 10% حتی در رشته و حیطهء خوشون بلد باشن و بتونن درست استفاده کنن. زبان اونقدرها هم چیز مهمی نیست! یعنی هستا، ولی در کنارش خیلی چیزهای دیگه هم هست همونقدر یا بیشتر مهم، و چیزهایی که همه باید دست به دست هم بدن تا زبان بتونه واقعا بدردبخور بشه و برنامه نویس هم برنامه نویس بدردبخوری باشه برنامه های با کیفیت درست کنه. مثلا الان همون دات نت و سی شارپ خیلی امکانات داره، و ویژوال استودیو به اون عظمت هست، ولی زیر دست چه کسانی هست چه برنامه هایی باهاشون درست میکنن چه کیفیتی دارن؟ من خودم بارها دیدم! بعضیا در حد آشغال! بقیش هم کیفیتش اکثرا پایینه و باگ و ضعف زیاد داره. اکثرا هم فقط برنامه های دیتابیسی و برنامه هایی که سطح علمی و چیز پیشرفته آنچنانی درش نداره و کارهای خیلی عمومی و معمولی و کلیشه ای هستن درست میکنن.
یعنی از بگم قابلیت اون زبان و فریمورک 5% هم به زور در این برنامه ها استفاده شده به شکل بهینه!

MMSHFE
شنبه 22 فروردین 1394, 10:24 صبح
حمیدرضا دوباره نرو تو فاز تعریف از خود. ضمناً پراپرتیهای استاتیک دیگه به راحتی قابل استفاده است و Getter و Setter گذاشتن واسه شون معنای خاصی نداره. اگه بحث اعتبارسنجی هم باشه (که توی Setter لازم میشه)، میشه براش متد گذاشت و با یه روش ساده ازش استفاده کرد:

class Test
{
private static $x;
private static $y;

public static function Set($variable, $value)
{
switch(strtolower($variable)) {
case 'x':
// ...
break;
case 'y':
// ...
break;
}
}
}
Getter هم که کلاً نیازی نیست چون با Test::$x میشه به راحتی بهش دسترسی داشت. بطور کلی استاتیک رو فقط بعنوان یک روش جایگزین موقت برای وقتی که نمیتونید بطور کامل شئ گرا کار کنید (یا بهینه نیست که حافظه اختصاص بدین) درنظر بگیرین و استفاده از استاتیک توی شئ گرایی واقعاً اونقدرها گسترده و با اهمیت نیست که بخوایم براش کلی امکانات متفرقه هم درنظر بگیریم. البته این نظر شخصی منه.

سوداگر
شنبه 22 فروردین 1394, 23:50 عصر
که گفته بعنوان یک امتیاز نه چندان جدی، 7 یک عدد خوش شانسی توی فرهنگ غرب و فرهنگ چینی محسوب میشه و کمی شانس به هیچ کسی آسیب نمیرسونه. البته در آخر گفتن که بعنوان یک امتیاز واقعی بهش نگاه نمیکنن و سایر مزایای نامگذاری نسخه جدید با عدد 7 که بهش توی مقاله اشاره کردن، بدون این موضوع هم خیلی قویه.

من فکر نمیکنم به خاطر نحس بودن 6 توی بعضی کشورها باشه خب 4 هم توی فرهنگ چینی نحس ترین عدد هستش چون تلفظش میشه si و دقیقاً تلفظ مرگ هم si میشه منتها با یه خورده آهنگ متفاوت... ولی میبینیم که PHP نسخه 4 داریم، دات نت 4 و خیلی چیزای دیگه نسخه 4.... و یادمون باشه که چین چه جمعیتی داره!!! پس کلا دلیل آوردن بر نحس بودن یا نبودن فلان عدد رو بیخیال بشید.

پ.ن جای رائفی پور خالیه :لبخند:

MMSHFE
یک شنبه 23 فروردین 1394, 08:32 صبح
Version Skipping در جاهایی که میخوان اعلام کنن تفاوتهای خیلی زیادی ایجاد شده، خیلی رایجه. اپل اومد نسخه 2 رو رد کرد و مستقیماً نسخه 3 داد بیرون. ویندوز نسخه 9 رو رد کرد و 10 رو منتشر کرد و...

desatir7316
یک شنبه 23 فروردین 1394, 13:18 عصر
اپل اومد نسخه 2 رو رد کرد و مستقیماً نسخه 3 داد بیرون.
می دونم به تاپیک بی ربطه ولی سوال برام پیش اومد. اپل 2 مگه همون نیست که بعد از اون برد اولیه ارائه دادن که سعی می کردم کاری کنن که فنش صدا نده و ...
که اوایلش هنوز توی گاراژ روش کار می کردن، بعد یه سرمایه گذار اومد و کمک کرد و ...

MMSHFE
دوشنبه 24 فروردین 1394, 02:29 صبح
نه منظورم توی صحبت، iPhone بود.

behnamy01
یک شنبه 13 اردیبهشت 1394, 11:17 صبح
دوستان من میخوام به محض اینکه PHP 7 ارائه شد، و اگر تغییرات به وجود اومده به نحوری بود که باعث میشد بعضی از کدهای ورژن های قبلی PHP در PHP 7 اجرا نشن، یک اسکرپیتی بنویسم و اون رو برای عموم در github.com و به صورت آنلاین در github.io بذارم.

اسکریپت به نحوی خواهد بود که کدهای خودتون از ورژن های قبلی PHP رو توی یک textarea وارد میکنید و دکمه استارت رو میزنید و اسکریپت کدهاتون رو با ورژن جدید PHP هماهنگ میکنه و توی یک Textarea دیگه بهتون خروجی میده تا بتونید راحت کپی کنید کدهای جدید رو.
مثلا فرض کنید در ورژن جدید کدهای MySQL دیگه به طور کامل حذف میشن و شما مجبورید از mysqli یا PDO استفاده کنید، این اسکریپت میاد و همه قسمت های کدهای شما رو که با MySQL بودن رو براتون به صورت اتوماتیک به mysqli یا PDO تبدیل میکنه!


سوالم اینه که آیا کسی در اجرای این پروژه بهم کمک میکنه؟ چون به نظر من لازمه همچین چیزی و اگر قرار باشه php تغییری کنه ما برنامه نویسای php باید بتونیم اون رو زنده نگه داریم و از بی نهایت کتابخونه و کدهای آماده که در سالیان گذشته نوشته شدن باز هم استفاده کنیم.