بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
مشکل کوچک در تعریف constant
سلام دوستان
سعی دارم constant هایی بنویسم که تمامی ارورهای سمت سرور را برگرداند؛ یک نمونه برای ارور دریافت نام نوشته ام و انتظار دارم که مقدار عددی آنرا برگرداند، بصورت زیر:
define(error_code_name, 1);
function getName(){
if(strlen($_REQUEST['name']) > 2){
$user_name = $_REQUEST['name'];
} else {
$record = array();
$record[success] = false;
$record[error_code] = error_code_name;
echo json_encode($record);
return;
}
}
زمانی که تابع getName() را صدا می کنم، خروجی دریافتی ام به این صورت است:
{"success":false,"error_code":error_code_name}
مشکل کد من کجاست که بجای مقدار constant خود آنرا چاپ می کند؟
برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال
سجاد عباسی
8 سال پیش
+1
0
باید به این صورت تعریف کنید
define("error_code_name", 1);
منبع: http://php.net/manual/en/function.define.php
پاسخ به سوال
SaeiD-as
8 سال پیش
0
0
دلیلش رو با کمی بررسی متوجه شدم:
من در ابتدای کار این شرط رو قرار داده ام:
if(isset($_REQUEST['action'])){
$action = $_REQUEST['action'];
}
زمانی که این شرط برقرار می شود این دستور را می دهم:
if($action=="getName"){
getName();
}
و پس از آن constant تعریف کرده ام:
define(error_code_name, 1);
در آخر هم تابعم را صدا کرده ام:
function getName(){
if(strlen($_REQUEST['name']) > 2){
$user_name = $_REQUEST['name'];
} else {
$record = array();
$record[success] = false;
$record[error_code] = error_code_name;
echo json_encode($record);
return;
}
}
مشکل این کد این است که زمانی action ست می شود constant تعریف نشده است، پس بایستی در ابتدا constant را تعریف کرد و سپس تابع را خواند، به این صورت:
define(error_code_name, 1);
if(isset($_REQUEST['action'])){
$action = $_REQUEST['action'];
}
if($action=="getName"){
getName();
}
function getName(){
if(strlen($_REQUEST['name']) > 2){
$user_name = $_REQUEST['name'];
} else {
$record = array();
$record[success] = false;
$record[error_code] = error_code_name;
echo json_encode($record);
return;
}
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .