اذهب إلى المحتوى

السؤال

نشر

أنا جديد على Yii، وعند تتبع بعض الدروس،  أدرجت الوظيفة التالية: }

public function getTypeOptions(){
        return array(self::TYPE_BUG=>'Bug',self::FEATURE=>'Feature',self::TASK=>'Task');
    }

ثم:

public function getTypeText(){
        $typeOptions = $this->typeOptions;
        return isset($typeOptions[$this->type_id]) ? $typeOptions[$this->type_id] : "unknown type ({$this->type_id})";
    }

مما فهمته أن getTypeOption ترجع مصفوفة من أنواع الـ TypeOption الموجودة داخل الاستمارة form، والتي تستعمل بالطريقة التالية:

$typeOptions = $this->typeOptions;

وقد حاولت أيضا بالطريقة التالية:

$typeOptions = $this->getTypeOptions();

لكن دون جدوى، فكيف أحصل على getTypeTex الخاصة بالاستمارة؟

Recommended Posts

  • 0
نشر

نعم بالإمكان الحصول على ذلك من خلال getAttributeName داخل Model والتي يمكن استعمالها من خلال this->attributeName لاسترداد قيمة الوظيفة من خلال Moldel والتي يطلق عليها اسم  "virtual attribute"، ويمكن الاطلاع على الأمر اكثر من خلال الرابط.

بالنسبة للكود المُدرج في سؤالك، يمكن تصحيحه، وذلك من خلال:

/**
     * PHP getter magic method.
     * This method is overridden so that AR attributes can be accessed like properties.
     * @param string $name property name
     * @return mixed property value
     * @see getAttribute
     */
    public function __get($name)
    {
        if(isset($this->_attributes[$name]))
            return $this->_attributes[$name];
        elseif(isset($this->getMetaData()->columns[$name]))
            return null;
        elseif(isset($this->_related[$name]))
            return $this->_related[$name];
        elseif(isset($this->getMetaData()->relations[$name]))
            return $this->getRelated($name);
        else
            return parent::__get($name);
    }

وذلك باستخدام مايسمى بـ  getter magic method ، ويمكن أيضا استعمالها بالاطلاع على موقع php.:

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...