PDA

View Full Version : سازگاری با ورژن های مختلف



maysamscript
یک شنبه 01 اردیبهشت 1387, 12:19 عصر
سلام
می خواستم بدونم اصولاً در برنامه نویسی با php چه استانداردهایی باید رعایت بشند که در نهایت برنامه ساخته شده با همه ورژن های PHP سازگار باشه.
مثلاً من برنامه ای با PHP نوشتم که وقتی اونو تو لوکال با WAMP5 Version 1.7.3 و PHP 5.2.4 اجرا میکنم هیچ مشکلی نداره ولی تو هاست که ورژن php اون 5.2.5 هست اروری میده که من اونو تو تاپیک قبلیم (http://barnamenevis.org/forum/showthread.php?t=102267) مطرح کردم ولی هنوز نتونستم مشکل اونو حل کنم.
در این زمینه phpnuke یه کارایی میکنه. مثلاً کد زیر رو ببینید.


// Get php version
$phpver = phpversion();

// convert superglobals if php is lower then 4.1.0
if ($phpver < '4.1.0') {
$_GET = $HTTP_GET_VARS;
$_POST = $HTTP_POST_VARS;
$_SERVER = $HTTP_SERVER_VARS;
$_FILES = $HTTP_POST_FILES;
$_ENV = $HTTP_ENV_VARS;
if($_SERVER['REQUEST_METHOD'] == "POST") {
$_REQUEST = $_POST;
} elseif($_SERVER['REQUEST_METHOD'] == "GET") {
$_REQUEST = $_GET;
}
if(isset($HTTP_COOKIE_VARS)) {
$_COOKIE = $HTTP_COOKIE_VARS;
}
if(isset($HTTP_SESSION_VARS)) {
$_SESSION = $HTTP_SESSION_VARS;
}
}

// override old superglobals if php is higher then 4.1.0
if($phpver >= '4.1.0') {
$HTTP_GET_VARS = $_GET;
$HTTP_POST_VARS = $_POST;
$HTTP_SERVER_VARS = $_SERVER;
$HTTP_POST_FILES = $_FILES;
$HTTP_ENV_VARS = $_ENV;
$PHP_SELF = $_SERVER['PHP_SELF'];
if(isset($_SESSION)) {
$HTTP_SESSION_VARS = $_SESSION;
}
if(isset($_COOKIE)) {
$HTTP_COOKIE_VARS= $_COOKIE;
}
}
حالا هیچکه هست که این موضوع رو بدونه و در مورد اون توضیح بده.:متفکر:

امید امرایی
یک شنبه 01 اردیبهشت 1387, 13:46 عصر
این خطا به دلیل متفاوت بودن نسخه PHP نیست گذشته از اون شاید PHP 4 با 5 دارای تفاوتهای عمده ای باشن ولی نسخه های 5 تفاوت های کلی ندارن که اگه اینطور بود به نسخه 6 تبدیل می شد.

این تفاوت ها به نحوه پیکیر بندی (تنظیمات) PHP بر وی سرور های متفاوت وابسته است . اگه از

phpinfo()بر روی سیستم محلی و وب سرور خودتون استفاده کنید این تفاوت ها رو می بینید . و در صورتی که تنظیمات رو همانند قرار بدید همون خطا در سیستم محلی شما هم بروز پیدا می کنن .

نا گفته نمونه که بیشتر این تنضیمات به مسائل امنیتی مربوط می شن .

maysamscript
یک شنبه 01 اردیبهشت 1387, 14:26 عصر
در صورتی که تنظیمات رو همانند قرار بدید همون خطا در سیستم محلی شما هم بروز پیدا می کنن .
تنضیمات مثل هم هستند مخصوصاً در مورد سشن

oxygenws
یک شنبه 01 اردیبهشت 1387, 14:35 عصر
این خطا به دلیل متفاوت بودن نسخه PHP نیست گذشته از اون شاید PHP 4 با 5 دارای تفاوتهای عمده ای باشن ولی نسخه های 5 تفاوت های کلی ندارن که اگه اینطور بود به نسخه 6 تبدیل می شد.
اینی که می‌گی معمولا درسته و نه همیشه! مثلا توی پی‌اچ‌پی ۵.۱ PDO داریم و تو ۵.۰ نداریم.


می خواستم بدونم اصولاً در برنامه نویسی با php چه استانداردهایی باید رعایت بشند که در نهایت برنامه ساخته شده با همه ورژن های PHP سازگار باشه.
چیزی به اسم استاندارد وجود نداره و اصولا این حرکتی هم که شما می‌گی انجام نمی‌شه.
برنامه‌ها بهتره خودشون رو همیشه با آخرین نسخه هماهنگ کنند. هماهنگ کردن phpnuke با ورژن ۴ به پایین پی‌اچ‌پی به نظر جز حماقت چیز دیگه‌ای نیست!! اما هماهنگی‌اش با نسخ بالاتر منطقیه (اما روش کارش برای رسیدن به این هدف مزخرفه!)
به هر حال اگر برنامه‌نویسی PHP بدونی، می‌فهمی که در چه شرایطی باید از چی استفاده کنی.

امید امرایی
یک شنبه 01 اردیبهشت 1387, 21:14 عصر
اینی که می‌گی معمولا درسته و نه همیشه! مثلا توی پی‌اچ‌پی ۵.۱ PDO داریم و تو ۵.۰ نداریم

بله حق با شماست ولی Extension ها رو در هیچ جای دنیا به عنوان تفاوت ها یا Future های یک نسخه جدید به حساب نمی یارن . صحبت بنده در مورد خود PHP و وژن های یک سری بود و عرض کردم تفاوت های کلی .