سؤال

أحاول استرداد متغير من فئة ممتدة. هكذا يبدو صفي الرئيسي:

class SS {
    public $NONE = NULL;
    public $NUMBERS = array("1", "2", "3", "4", "5", "6", "7", "8", "9", "0");
    public $OPERATORS = array("=", "&&", ">", "<", "+", "-", "/", "*", "^");
    public $DBLQUOTES = '"$1"';
    public $SNGQUOTES = "'$1'";
    public $CODE;

    function SuperSyn($sCode, $cLang) {         
        $hLang = new VB6;
        $VB6 = $hLang->__construct();
        echo $VB6->ssAuthor;
    }
}

ويبدو أن صفي الممتد مثل هذا (لقد قمت بإزالة العديد من الكلمات الرئيسية).

class VB6 extends SS {
    public function __construct() {
        $ssAuthor = "James Brooks";
        $ssCSS = "languages/vb6.css";
        $ssNumbers = $NUMBERS;
        $ssKeywords = array("Abs", "Access", "AddItem");
        $ssReserved = $NONE;
        $ssComments = "('.+)";
        $ssOperators = $OPERATORS;
        $ssDoubleQuote = $NONE;
        $ssSingleQuote = $NONE;
    }
}

إذا قمت بإزالة الوظيفة العامة التي يتم استدعاؤها ، فإن الكلبات PHP تتوقع وظيفة.

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

المحلول

سيتم استدعاء المُنشئ لك عند إنشاء كائن ، لذلك يجب أن يعمل:

function SuperSyn($sCode, $cLang) {                     
     $hLang = new VB6(); //I think you need some parameters here
     echo $VhLang->ssAuthor;
}

ومع ذلك ، في مُنشئ VB6 ، تقوم حاليًا بتعيين المتغيرات المحلية فقط ، لذلك لن تتمكن من الوصول إلى SSAuthor خارجيًا. بدلاً من ذلك ، ربما تريد أن تفعل شيئًا مثل:

class VB6 extends SS {
    public $ssAuthor;

    public function __construct() {
        $this->ssAuthor = "James Brooks";
        //etc.
    }
}

نصائح أخرى

استخدم الكلمة الرئيسية لـ PHP.

الوالد PHP

استعمال parent:: أو $this-> (يعتمد ، أي لديك متغيرين مع نفس الاسم)

أعتقد أن هناك مشكلة منطقية مع توقعك. لماذا يجب أن تعرف وظيفة الفئة SS عن متغير موجود فقط في الفئة الفرعية VB6؟

لن يكون هذا سلوكًا وراثة نظيفًا ويكشف عن مشكلة في فصولك.

خياران لحل ذلك:

  • ضع المتغير في الفئة الرئيسية لاستخدامه في وظيفة في تلك الفئة
  • ضع الوظيفة باستخدام متغير الفئة الفرعية داخل الفئة الفرعية

(بعد قراءة التعليقات حول الكلمة الرئيسية الأصل و ´ $ هذا المتغير: فهمت السؤال بشكل مختلف ولا أعتقد أن أيًا من تلك التي يجب أن تساعد لأن الاتجاه المعاكس مطلوب: وظيفة فئة الأصل> متغير الفئة الفرعية ، وليس وظيفة الفئة الفرعية> متغير فئة الوالدين)

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