【发布时间】:2012-10-27 09:58:57
【问题描述】:
我正在编写一个 PHP 脚本来将主题从旧论坛站点迁移到新站点。
- 旧论坛站点使用数据库“old_forums”
- 新的论坛站点使用数据库“new_forums”
- MySQL 用户“论坛”拥有两个数据库的所有权限(为方便起见,我使用 1 个单用户,但如果需要,使用 2 个不同的用户不会有任何问题)
我将两个论坛都托管在同一主机上 - 本地主机
我的脚本结构如下
<?php
class Forum {
//constants
const HOST = "localhost";
const DB_USER = "forums";
const DB_PASS = "forums";
...
//properties e.g. topic title, topic content
}
class OldForum extends Forum {
const DB_NAME_OLD = "old_forums";
public static function exportTopics() {
//some code
}
}
class NewForum extends Forum {
const DB_NAME_NEW = "new_forums";
public static function importTopics() {
//some code
}
}
OldForum::exportTopics();
NewForum::importTopics();
?>
我知道我在这里混合了过程和面向对象的编程 PHP (OOPP)。 我是面向对象的 PHP 新手,但是(我有 Java 经验,所以我非常愿意接受一些指南来制作这个纯 OOPP)
我想为 OldForum 和 NewForum 类使用 1 个 MySQL 连接。
我应该在哪里实例化 mysqli 对象?
例如在 Forum 类的构造函数中或将新的 mysqli 对象作为 Forum 类的属性
这样我就可以创建一个新的 Forum 对象来启动 MySQL 连接
$a_forum = new Forum();
【问题讨论】:
-
这不是“OOP”,只是namespaced procedural code。无论如何,你有很多问题,对你来说真正的挂断是什么?为什么不能实例化 mysqli 连接并将其传递给您的方法?
-
如何区分新旧?
-
嗨@deceze,谢谢,现在改写我的问题。我打算在 OldForum 和 NewForum 类中将数据库名称设置为 1 常量,这会不会非常错误?
-
现在正在阅读您的参考资料,顺便说一句,@deceze