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 hepsiSQL
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"
?>