php hiçbir $parent->function(); sözdizimi neden orada olduğunu merak ediyordum, ama bunun yerine bir statik sınıf içinde kullanılan benziyor ki parent::function(); kullanabilirsiniz. Ben bazı php oop temel eksik?
Ben garip görünüyor itiraf - ve ^ ^ kılavuzda şey özledim vermedi
Ancak:
__construct hariç, itiraf - bu ebeveynin __construct yöntemi kendiniz aramak zorunda kılavuzda açıkça söyleniyor bu yüzden muhtemelen.$this çocuk veya ebeveyn sınıfının ya aynı örneğinde yöntemleri çağırmak için kullanacağız; yöntemi aslında nerede olduğunu bilmek gerek.parent:: statik bir çağrı gibi görünüyor olsa bile, gayet iyi çalışıyor
And here's an example of code showing parent:: works fine :
class Father {
public function method() {
var_dump($this->a);
}
}
class Son extends Father {
protected $a;
public function method() {
$this->a = 10;
parent::method();
}
}
$obj = new Son();
$obj->method();
You'll get this output :
$ /usr/local/php-5.3/bin/php temp.php
int(10)
Hangi ana sınıfta, metot $this erişimi ve alt sınıfında tanımlanan özelliklere sahip olduğunu göstermektedir.
Kullanarak $parent aslında üst sınıf örneği olduğunu varsayar çünkü.
Lütfen sözdizimi çalıştı öneririz, bu size 2 veya daha fazla nesneleri başlatmasını edildi, bir nesne örneği her şey anlamına gelecektir.
PHP, her değişken bir dize, tamsayı (ya da diğer sayısal biçim), dizi, nesne veya kaynak içermelidir. $this bir nesne içerir ve sadece içinizde şu anda nesne olur.
$parent oluşturmak için, $parent içine bir nesne koymak zorunda kalacaktı. Sen üst sınıf teknik örneği değil, bu nedenle bir değişkene atanamaz.
BTW parent::function(); $this tüm erişimi vardır.
Dolayısıyla, bu işleri
class Test
{
public function test()
{
echo $this->testing_var;
}
}
class OtherTest
{
public function run()
{
$this->testing_var = "hi";
Test::test(); // echos hi
}
}
Ve bu sınıfın dışında kullanıldığı takdirde hata olacak ve statik ilan edilmelidir söyleyecektir.
Test::test();