If it hurts, its likely that you're
doing it wrong.
Öncelikle daha somut bir çözüm sunmak için imkansız kod fazla görmeye, ama ben şiddetle uygulamak için onları uzun bir liste var gibi statik işlevleri (bu sesler böylece sizin sınıf yapısını yeniden düzenleme düşünün tavsiye ederim olmadan, kapalı ) olmayan statik hale gelebilirler.
Özünde, SQLMapper bir örneklenmiş örneğini erişme ve sonra örneğinden uygun yöntemi çağırarak düşünmelisiniz. Bu paradigmayı kullanarak, sadece o özgürce sınıfındaki tüm yöntemlerle başvurulan hangi $ _DATABASE için bir sınıf düzeyi özelliği örneğini olabilir.
Örneğin:
class SQLMapper {
private $_db;
public function __construct()
{
global $_DATABASE;
$this->_db = $_DATABASE;
}
public function find_user_by_id($id) {
$sql = "Select * from User WHERE Id = ?";
$stmt = $this->_db->prepare($sql, $id);
return $stmt->execute();
}
}
Bunu dedi, küresellerle kullanarak bu yüzden ben de sizin mevcut tasarım daha nesne yönelimli bir yaklaşım alarak düşünün ve tamamen uygulamadan küresellerle ortadan kaldırmak için denenmiş ve doğru yöntemler aramaya öneririm genelde kötü kod kaliteli bir işaretidir.