Genişletilmiş sınıftan PHP Değişken

4 Cevap php

Ben uzun bir sınıfından bir değişkeni almak için çalışıyorum. Bu benim ana sınıf nasıl görünüyor:

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;
	}
}

Ve benim genişletilmiş sınıfı (I anahtar kelimelerin çoğu kaldırıldı ettik) bu gibi görünüyor.

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;
	}
}

Ben kamu görevi kaldırırsanız __ bir işlevi bekliyor ki PHP orospular, çağrıldığını inşa.

Benim soru nasıl benim ana sınıfa genişletilmiş sınıfından bir değişkeni almak olabilir, değil mi?

4 Cevap

Eğer bir nesne oluşturduğunuzda yapıcı sizin için çağrılır, bu nedenle bu çalışması gerekir:

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

Ancak VB6 kurucudaki şu anda yalnızca yerel değişkenler atama, böylece dışarıdan ssAuthor erişmek mümkün olmaz. Bunun yerine muhtemelen gibi bir şey yapmak istiyorum:

class VB6 extends SS {
    public $ssAuthor;

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

PHP'nin ana anahtar kelime kullanın.

PHP parent

parent:: veya $this-> (Eğer aynı isimde iki değişken var yani bağlı) kullanın

Ben senin expectiation ile mantıksal bir sorun olduğunu düşünüyorum. Neden sınıf SS bir fonksiyonu sadece VB6 sınıfta bulunan bir değişken hakkında bilmeniz gerekir?

Yani temiz bir miras davranış olarak ve sınıfları ile ilgili bir sorun ortaya koymaktadır olmaz.

Bunu çözmek için iki seçenek:

  • Bu sınıfta bir fonksiyonu kullanmak için ana sınıfı değişkeni koydu
  • Alt sınıfın içinde alt sınıfın değişkeni kullanarak işlevini koymak

(Ana anahtar ve '$ bu' değişkeni ile ilgili yorumları okuduktan sonra: Ben farklı soru anlaşılır ve bu da faydası olacağını sanmıyorum ters yönde gerekli olduğundan: Üst sınıf işlevi> alt sınıf değişken değil, alt sınıf fonksiyonu> üst sınıf değişkeni)