PDA

View Full Version : سوال: نحوه مقدادهی به متغیرهای داخل کلاس (حل شد)



asma69
جمعه 03 بهمن 1393, 23:31 عصر
سلام.
من تازه با برنامه نویسی شی گرا اشنا شدم.
یه سری کد معمولی داشتم که می خواستم تبدیل کنم به شی گرا.
اما یک جا به مشکل خوردم.
تو مقداردهی متغیرهای داخل کلاس از صفحه قبل مشکل دارم.
فرض کنید من یک سری متغیر داخل کلاسم تعریف کردم که مقدار این متغیرهارو می خوام برابر با مقدار text هایی قرار بدم که در صفحه قبل وجود داره.
برای این کار اومدم از $_post استفاده کردم.
متغیرهای داخل کلاس و مقدادهیشون رو به شکل زیر تعریف کردم.



class insert
{
private $name='$_POST["name"]';
private $family='$_POST["family"]';
private $age='$_POST["age"]';
}


اما مقادیری که توسط $_post دریافت می شه رو نمی تونه تشخیص بده.
تو یه پست دیگه بهم گفتن که تک کوتیشن ها رو بردارم چون مانع پردازشه.
برداشتم اما خطا داره.
چطوری می تونم مقدار text هایی که در صفحه قبل وجود داره رو به این متغیرها نسبت بدم که بعد بتونم توی توابعم ازشون استفاده کنم؟
لطفا اگه می تونید، کمکم کنید.
ممنون

asma69
شنبه 04 بهمن 1393, 06:28 صبح
لطفا اگه کسی می تونه کمکم کنه.
ممنون می شم.
خیلی مهمه

فرزند کوروش
شنبه 04 بهمن 1393, 08:40 صبح
<?php
class insert
{
var $name;
var $family;
var $age;
function printPost(){
return $this->name;
}
}
$c = new insert;
$c->name = $_POST['name'];
$c->family= $_POST['family'];
$c->age = $_POST['name'];
echo $c->printPost();

?>

hamedarian2009
شنبه 04 بهمن 1393, 10:14 صبح
چون فیلدهای شما private هستن و نمیتونید مستقیم بهشون دسترسی داشته باشین برای اینکار بهتره از متدهای جادویی دستیاب استفاده کنید


class insert {
private $name;
private $family;
private $age;

public function __get($property) {
if (property_exists($this, $property)) {
return $this->$property;
}
}

public function __set($property, $value) {
if (property_exists($this, $property)) {
$this->$property = $value;
}

return $this;
}
}

$obj = new insert;
$obj->name = $_POST['name'];
$obj->family = $_POST['family'];
$obj->age = $_POST['age'];
echo $obj->name.' '.$obj->family.' and age is: '.$obj->age;

asma69
شنبه 04 بهمن 1393, 12:25 عصر
سلام.
ممنون.
فقط اگه بخوام از مقدار این متغیرها در داخل توابع خود کلاس استفاده کنم، مشکلی پیش نمی یاد؟
مثلا داخل یه تابع به نام insert که قراره همین اطلاعات رو توی بانک ثبت کنه.
در اون صورت چطوری می تونم ازشون استفاده کنم؟
ممنون

asma69
شنبه 04 بهمن 1393, 13:32 عصر
سلام.
تو پست قبلی هم توضیح دادم.
من می خوام از مقادیر این متغیرهای private در داخل توابع کلاسم استفاده کنم. مثلا تابع inser
موقع اجرا از این 3 خط کدم خطا می گیره و نمی تونه مقداردهی کنه



$obj->name = $_POST['name'];
$obj->family = $_POST['family'];
$obj->age = $_POST['age'];


و نمی تونه مقداردهی کنه.می دونید مشکل از چیه؟

hamedarian2009
شنبه 04 بهمن 1393, 14:31 عصر
شما مقادیر این سه تا متغیر رو بیرون از کلاس مقداردهی می کنید و برای استفاده از متغیرها داخل متدی از کلاس از this$ و اسم اون متغیر باید استفاده کنید مثلا این تابع برای چاپ این سه تا رو نوشتم:


public function display(){
echo 'name: '.$this->name.' '.$this->family.' and age : '.$this->age;
}


فقط این تابع رو موقعی به کار می برین که متغیرهارو مقدار دهی کرده باشین


$obj = new insert;
$obj->name = $_POST['name'];
$obj->family = $_POST['family'];
$obj->age = $_POST['age'];
$obj->display();

asma69
شنبه 04 بهمن 1393, 14:39 عصر
خیلی ممنون.
امتحان می کنم ببینم چه نتیجه می ده.
مرسی.

asma69
شنبه 04 بهمن 1393, 15:54 عصر
سلام.
مشکلم حل شد.
مرسی . ممنون از راهنماییتون.