PHP sınıfları arasında nesneleri paylaşma

4 Cevap php

Diğer sınıflar arasındaki nesneleri paylaşmak için en iyi yolu nedir?

Örneğin; "yazı" ve "kullanıcı" nesneler tarafından gerekli olan fonksiyonları ile bir "veri tabanı" nesne.

Ben gibi, küresellerle kullanmak istediğiniz (yani singletons içerir) ya da her sınıfta nesnenin yeni bir örneğini oluşturmak yok

function __construct() {
    $this->database = new database;
    $this->cache = new cache;
}

Örneğin, nesneleri geçen olurdu.

class test{
    function __construct( $obj ) {
        $this->obj = $obj;
    }
}
$database = new database;
$test = new test( $database );

Gitmek için yolu olabilir mi?

4 Cevap

Evet. Ya da bir ayarlayıcı - - kurucu nesneleri geçen gitmek için en iyi yoldur. Bu model, dependency injection olarak bilinir. Bu (koçanları veya mocks kullanarak) test etmek için kod kolaylaştırır ki yararı vardır.

Tek bir örneği varsa gitmek için yol singletons olacaktır. (: Yapıcı diyelim) değilse, tek yol başlatma sırasında onları geçmektir.

Evet, bu oldukça çok yapmak istediğiniz yolu. Bir sınıf harici gereksinimleri varsa, sınıf içinde bunları oluşturmak, ama yapıcı argümanlar olarak bunları gerekmez.

Bu doğru yönde atılmış bir adım olacaktır, ama aslında kodda kısıtlı olmasa bile, sen do aslında orada singleton'ununu istiyorum bana görünüyor.