إكمال الكود لمتغيرات الأعضاء الخاصة/المحمية عند استخدام Magic __get ()

StackOverflow https://stackoverflow.com/questions/3814733

سؤال

كيف يمكنني إعداد إكمال الكود للعمل على Zend Studio (أو أي IDE المستند إلى Eclipse) عند العمل مع فئة تحتوي على متغيرات أعضاء خاصة أو محمية دون اللجوء إلى مجموعة من Getter أو تعيين Vars العضو على أنها عامة.

علي سبيل المثال:

class Dog {

    protected $bark = 'woof!';

    public function __get($key) {
        if (isset($this->$key)) {
            return $this->$key;
        }
    }

}

$Dog = new Dog();
echo $Dog->bark; // <-- I want the IDE to "know" that bark is a property of Dog.
هل كانت مفيدة؟

المحلول

يمكن تحقيق إكمال الكود للطرق السحرية باستخدام @منشأه و @طريقة التعليق التوضيحي في docblock من الفصل (وليس في مستندات الطريقة).

/**
 * @property string bark
 */
class Dog {
    /* ... */
}

$Dog = new Dog();
echo $Dog-> // will autocomplete now

لاحظ أنه لا يوجد علاقة بين الكود الفعلي والشرح. سيظهر Zend Studio ما تحدده @property, ، بغض النظر عن هذه الخاصية الموجودة. كما أنه لن يتحقق مما إذا كان هناك بالفعل طريقة سحرية متاحة.

Code Completion in Zend Studio with @property annotation

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top