Bir PHP sınıfı değişkenler gibi nesnelerin saklanması

5 Cevap php

Aşağıdaki gibi birçok keyfi sınıfları var varsayalım:

class Foo
{
    $foovar;

    public function __construct()
    {
        $foovar = "Foo";
    }

    public function getFoo()
    {
        return($foovar);
    }
}

class Bar
{
    $F;

    public function __construct()
    {
        $F = new Foo();
    }
}

Aşağıdaki gibi bir şey yazmak mümkün Sorum olduğunu

$B = new Bar();
echo($B->F->getFoo());

Ben benim önceki soruya söylediğim gibi, ben seni System.out.println() diğer nesneleri yöntemleri çağırmak için bir araya değişkenleri bağlantı biliyorum, güçlü bir Java arka plan gelir. Bu PHP mümkün olup olmadığını bilmek istiyorum

5 Cevap

Evet kesinlikle haklısınız, bu örneğe bakın lütfen.

class Foo {
 public function hello() {
  return 'hello world';
 }
}

class Bar {
 public $driver = NULL;

 public function __construct() {
  $this->driver = new Foo;
 }
}

$test = new Bar;
echo $test->driver->hello();

Bazı diğer yorumlar

return($foovar);
  • Pars burada gerekli değildir.
  • Sen $this->foovar (sınıf üyeleri ile çalışmak için kullanmanız gerekir sürece statik, bu durumda bu kadar self::$foovar

Sınıf üyeleri, aynı zamanda erişim tipi specifed olması, örneğin, public $foovar; gerekir.

Neden bana ötesinde PHP Java edilir hareketli, ama iyi şanslar ediyoruz :)

Bu kesinlikle mümkün değildir.

Sadece bu mümkün ama çok yaygındır. Eğer kullanılan göreceksiniz Bir kez delegation ile.

$F in $B, kamu ya da siz ([{ardından $F dönmek için istekli olduğunu Bar'da bir __get($var) yöntemi varsa 4 )]} çalışıyor.

Evet, ancak bazı ek sözdizimi ile. Umarım biraz daha iyi şeyleri göstermek için alıcı yöntemleri kullanılır, ancak sınıf halk içinde değişkenleri yaparsanız onlar gerekli değildir.

<?php
class Foo
{
    private $foovar;

    public function __construct()
    {
        $this->foovar = "Foo";
    }

    public function getFooVar()
    {
        return $this->foovar;
    }
}

class Bar
{
    private $fooclass;

    public function __construct()
    {
        $this->fooclass = new Foo();
    }

    public function getFoo()
    {
        return $this->fooclass;
    }
}


$bar = new Bar();
print $bar->getFoo()->getFooVar();
?>