سؤال

مجرد فكرة:

مثال (في PHP):لتعيين الاسم:$object->name('name');للحصول على الاسم:$object->name();

إذا لم يكن هناك حجة:يتم استخدام الطريقة كـ getter، وإلا كـ setter.للحصول على الحروف/الواضعة البسيطة.غبي، أيا كان، ربما؟

يحرر:لمتابعة الإجابات:أنا لا أحب حقا الحصول على وتعيين لأنني أفضل أن تكون الواجهة واضحة قدر الإمكان.عندما لا يكون هناك سوى عدد قليل من الخصائص، فهذا أيضًا مبالغة في IMHO.لذلك أود تضييق نطاق الأمر إلى فئات/كائنات تحتوي على اثنين من الحروف/المحددات الصريحة.

هل كانت مفيدة؟

المحلول

بالتأكيد، يمكنك القيام بذلك إذا كان ذلك منطقيًا في طلبك، وإلا فسأستخدم الحروف/المحددات القياسية التي تم إعدادها لك بالفعل.يمكن أن تبدو وظيفتك كما يلي:

public function name($val = null)
{
  if (is_null($val))
  {
    return $this->name;
  }
  else
  {
    $this->name = $val;
  }
}

نصائح أخرى

المشكلة هي أنه سيكون من الصعب متابعته.أفضل استخدام PHP5's __get و __set لذا فمن الطبيعي الحصول على المتغيرات وتعيينها، وسيعرف الجميع بالضبط ما أفعله.أي:

class myClass
{

    function __get($name)
    {
       return $this->array[$name];
    }
    function __set($name, $value)
    {
       $this->array[$name] = $value;
    }
    function print()
    {
       echo $this->array['test'];
    }
}
$obj = new myClass;
$obj->test = "Hi";
echo $obj->test; //echos Hi.
$obj->print(); //echos Hi.

يمكن القيام بذلك باستخدام الطريقة السحرية __call().

class Test {
    public function __call($name, array $args) {
        $variable =& $this->$name;
        if(!empty($args)) {
            $variable = $args[0];
        }
        return $variable;
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top