Birçok kaynak dosyalar arasında bir sınıf yayıldı nasıl?

0 Cevap php

Ben şu anda kapsamlı bir veritabanı kullanımını içeren bir PHP projesi üzerinde çalışıyorum. Temelleri şunlardır: Ben Fabrika desen ve {[teslimi görüşmelerde (bir soyut statik yöntemlerle SQL sınıfı (bu yöntemlerden sadece bir kap) izleyen bir PDOFactory sınıf var 0)]}

Dediğim gibi, proje kapsamlı veritabanı kullanımını içerir, bu nedenle SQL class çeşitli yöntemler içerir. Ancak, kolayca onlar (yani oturum depolama, açık / kapalı kullanıcı oturum, vb) ile anlaşma ne bağlı olarak, gruplandırılmış olabilir. Bu çok ve benzeri korumak ve SQL sınıf çok daha kolay olacaktır. Ve burada büyük soru geliyor: Ben birçok dosya üzerinde class contents yayılma kaynağını alabilir miyim? (En azından) bu sorunun iki olası çözüm olabilir:

  • Çoklu kalıtım, yani sınıfları SQLSession, SQLUser, SQLblahblah olan ve hepsi SQL sınıf devralma yapıyor.
  • C + + gibi ön-işlemci * direktifler, yani #include SQLSession.php; ya da onun gibi bir şey.

Ben bu seçeneği No 1 dışladı böylece PHP no çoklu kalıtım, orada olduğunu biliyorum. Seçenek 2 Nolu bile mümkün mü? Ya herkes bu soruna daha iyi çözümler biliyor mu?

* Ya da aslında önceden ön-işlemci direktifleri, PHP is, bir ön-işlemci beri. :)

EDIT:

Here's an attempt to answer this question, based on Kalium's suggestion. It's a mess to read, but it works. However, I'm gonna stick with Bill's method as it's way cleaner.

class SQL {

  private static $oInstance = false;
  public static function getInstance()
  {
    if( self::$oInstance == false )
    {
      self::$oInstance = new self();
    }
    return self::$oInstance;
  }

  public $SESSION;

  private function __construct()
  {
    $this->SESSION = new SESSION;
  }
}

// this would be in another file
class SESSION {
  public function printOne()
  {
    echo "One";
  }
}


SQL::getInstance()->SESSION->printOne(); // outputs "One"

?>

0 Cevap