好的,所以我已经掌握了编写类和方法的基础知识,并扩展了它们。
我可以轻松地编写一个包含我可能想要的所有方法的大型类,或者只是在链中继续扩展的几个类。但事情开始变得难以管理。
我想知道我是否可以做类似以下代码的事情,所以我可以将“模块”分开,并且只在需要时启动它们。我希望这对于我希望实现的目标有一定的意义:
// user/member handling methods "module"
class db_user
{
public function some_method()
{
// code that requires parent(?) objects get_something() method
}
}
// post handling methods "module"
class db_post
{
public function some_method()
{
// code that requires parent(?) objects update_something() method
}
}
class db_connect()
{
public $db_user;
public $db_post;
public function __construct()
{
// database connection stuff
}
public function __destruct()
{
// blow up
}
// if i want to work with user/member stuff
public function set_db_user()
{
$this->db_user = new db_user();
}
// if i want to work with posts
public function set_db_post()
{
$this->db_post = new db_post();
}
// generic db access methods here, queries/updates etc.
public function get_something()
{
// code to fetch something
}
public function update_something()
{
// code to fetch something
}
}
然后我会创建一个新的连接对象:
$connection = new db_connect();
需要与用户合作..
$connection->set_db_user();
$connection->db_user->some_method();
现在我需要对帖子做点什么......
$connection->set_db_post();
$connection->db_post->some_method();
$connection->db_post->some_other_method();
我希望有人可以在这里帮助我,我已经搜索了几天但似乎找不到任何信息,除了基本上把它全部放在一个类或创建一个无穷无尽的扩展链 - 这不是没有用,因为虽然我希望一切都通过一个“界面”工作,但我仍然希望将“模块”分开。
道歉,如果这看起来完全荒谬的话 - 毕竟我是新手......
答案 0 :(得分:2)
您可以将对db_connect实例的引用传递给db_user / db_post构造函数,并将其存储到字段$parent
中。
答案 1 :(得分:2)
将db_connection
传递到db_*
类:
class db_user
{
protected $db;
public function __construct($db)
{
$this->db = $db;
}
public function some_method()
{
// code that requires parent(?) objects update_something() method
$this->db->update_something();
}
}
使用:
$db = new db_connection();
$user = new db_user($db);
$user->some_method()
db_connect
不应该有set_db_user
,set_db_post
等。它应该处理连接到数据库,可能还有一些通用的选择/更新/插入/删除方法