• 1 رای - 5 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
get , set
#1
سلام می دونم درباره این موضوع خیلی بحث شده .
منم خیلی خوندم و گشتم ولی واقعا این 2 تا تابع جادویی رو به هیچ وجه نمی فهمم.
ممکنه یکی این دو تا رو به زبان زیر پنجم ابتدایی توضیح بده
بخصوص پارامترهایی که میگیره
  پاسخ
تشکر شده توسط :
#2
متد get واسه گرفتن property و متد set هم واسه ست کردن property استفاده میشه
کد پی‌اچ‌پی:
class name {
    
    private 
$name;
    
    function 
setName($name){
        
$this->name $name;
    }
    function 
getName()
    {
        return 
$this->name;
    }
    
}
$clsName = new name();
$clsName->setName("parvane");
echo 
"Name is  ".$clsName->getName(); 
  پاسخ
تشکر شده توسط :
#3
از اونجا به اینها می گن جادویی که جایی که باید اونطوری باید ( اونطوری که ما می خوایم ) در اختیار کاربر قرار می ده
مثلا ما از کاربر نام کلاس رو می گیریم و هنگام set اما هنگام get بجای همون رشته که اسم کلاس هست می تونیم ( یعنی کلاس ایجاب می کنه ) که ابجکتی از اون کلاس رو برگردونیم!!!
  پاسخ
تشکر شده توسط :
#4
نقل قول:متد get واسه گرفتن property و متد set هم واسه ست کردن property استفاده میشه
کد پی‌اچ‌پی:
class name {
    
    private 
$name;
    
    function 
setName($name){
        
$this->name $name;
    }
    function 
getName()
    {
        return 
$this->name;
    }
    
}
$clsName = new name();
$clsName->setName("parvane");
echo 
"Name is  ".$clsName->getName(); 
این چیزی که من اینجا می بینم ربطی به set و get نداشتا !
کد پی‌اچ‌پی:
<?php

class test {

    private 
$arrays = array();

    public function 
__set$key $value )

    {
        
$this->arrays[$key] = $value;

    }

    public function 
__get$key)

    {
        if (
array_key_exists($key$this->arrays)) {
            return 
$this->arrays[$key];
        }
        
$trace debug_backtrace();
        
trigger_error('Undefined property via __get(): ' $key ' in ' $trace[0]['file'] . ' on line ' $trace[0]['line'], E_USER_NOTICE);
        return 
null;
    }

}

$test = new test();
$test->myfav 'PHP';
echo 
$test->myfav// PHP
echo $test->yourfav// Error
?>
  پاسخ
تشکر شده توسط : admin hosseintdk775 scooter
#5
مشکل شما چیه؟
کار این دو تابع، اینه که دسترسی و تغییر متغیرها از داخل کلاس انجام بشه.
  پاسخ
تشکر شده توسط :
#6
اگر با الگوهای طراحی آشنا باشید کاربرد اصلی این دو در الگو proxy هست
شما فرض کنید که یک حساب بانکی دارید
حالا فرض کنید یک متد دارید به عنوان برداشت از حساب که به بانک مراجعه میکنید و به میزانی که میخواهید پول رو بر میدارید
ولی یک کار دیگه که بانک انجام داده، ایجاد نماینده برای حساب بانکی شماست که همون چک پول و یا حواله بانکی هست که بدون اینکه نیاز باشه پول رو از حسابتون خارج کنید و به کسی بدید، میتوانید مبلغ مورد نظر رو با نماینده حسابتون یعنی چک پرداخت کنید.
به عبارت دیگه میشه کار این دو سربارگذاری خواص و call هم سربارگذاری متده هست که به بیان دیگر فرض کنید که شما یک نمونه از کلاستون تعریف میکنید و به خاصیتی که قبلاً تعریف نشده مقدار جدیدی میدهید و یا میخواهید مقدار اون رو دریافت کنید که در این حالت دستوراتی که در get و set هست انجام میشود یعنی اونها در حقیقت مثل یک نماینده عمل میکنند.
  پاسخ
تشکر شده توسط : scooter
#7
سلام من چند تا سوال دیگه هم دارم که تا تنور داغه بپرسم
دقیقا در چه مواردی باید بعد از شروع کلاس متغیر ها رو تعریف کرد؟
یعنی
کد پی‌اچ‌پی:
class a{
private 
$a;
private 
$b 
دقیقا چه مواقعی باید متغیر ها رو در ابتدای کلاس تعریف کرد؟


سوال بعدی
کد پی‌اچ‌پی:
$_f='m'
این _دیگه چه صیغه ایه

سوال اخر
این کلاس اشکالش چیه که ارور میده
نقل قول: Notice: Undefined variable: res in D:\wamp\www\oop\b.php on line 25

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in D:\wamp\www\oop\b.php on line 25

کد پی‌اچ‌پی:
<?php 
class my_conn
{
    
    public static function 
_dbconn()
    
    {
        
$link=mysql_connect('localhost','root','')or die(mysql_error());
        
mysql_select_db('mr_mohsen') or die(mysql_error());
        
    }
    
    public static function 
my_query()
    {
        
self::_dbconn();
        
$sql='SELECT * FROM mr_blog';
        
$res mysql_query($sql) or die(mysql_error());
        return 
$res;
         
    }
    public static function 
fetch()
    {
        
self::_dbconn();
        
self:: my_query();
        while(
$row=mysql_fetch_assoc($res) or die(mysql_error()))
        {
        echo 
$row['mr_head_line'];
        }
        return 
$row;
    }

    
}
    
$mohsen=new my_conn();
    
my_conn::fetch()


?>
  پاسخ
تشکر شده توسط :
#8
اینکه متغیرها یا همون خواص رو کجا تعریف کنیم دلخواهی هست ولی معمولش شروع تعریف کلاس هست
در نام گذاری متغیر ها و توابع میتوانیم از a-z A-Z و اعداد و _ استفاده کرد که اعداد رو نمیشه در شروع آورد پس این یک تعریف متغیر عادی هست.
خطای اول میگه متغیری به نام res موجود نیست و خطای دوم میگه آرگومان ورودیت ایراد داره
  پاسخ
تشکر شده توسط : abedi98


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان