1.基本情况
oop写的conn连接mysql的类,系统中所有用到数据库的类来extends它。
此类部分内容见下:class db{
public $conn;
private static $h = "localhost";
private static $u = "root";
private static $p = "123123";
public $db = "wms";//此外是变化的,换句说wms不是固定的,是变化的。user1登录时,$db="user1";user2登录时,$db="user2";2.
因为$db是变化的,不是固定的。我一开始用$db=$_SESSION['user']但是类中不能用session.
请问如何实现呢?
3.
此法子除外。
$obj=new db($db);//通过析构函数。此法子不能用。因为其他原因,反正不能使用。
oop写的conn连接mysql的类,系统中所有用到数据库的类来extends它。
此类部分内容见下:class db{
public $conn;
private static $h = "localhost";
private static $u = "root";
private static $p = "123123";
public $db = "wms";//此外是变化的,换句说wms不是固定的,是变化的。user1登录时,$db="user1";user2登录时,$db="user2";2.
因为$db是变化的,不是固定的。我一开始用$db=$_SESSION['user']但是类中不能用session.
请问如何实现呢?
3.
此法子除外。
$obj=new db($db);//通过析构函数。此法子不能用。因为其他原因,反正不能使用。
require_once 'db.php';
class userDao extends db{}
2.①最好不要这样设计数据库,后面拓展和维护起来很复杂,LZ需要考虑到不同的情况,最好从多个表,或者多个字段下手。
②session的值想传到类中处理,先经过PHP处理页面(我们一般叫他控制层),用访问类方法的方式传。
比如:user1登录后 处理页面标记为1 在访问数据库前 把1传入类 好让他知道调用哪个数据库 不过还是建议不要把数据库设计得太复杂
3.LZ为什么要在析构函数中实例化对象呢?一般析构函数是用来销毁对象,释放空间的。LZ要初始化对象的话,应该是在构造函数中做的。
__construct()
这个不叫析构叫做构造函数
析构是__destruct,销毁时调用的为什么反正不能用构造函数…………
如果不行就自己写个init函数传值
$db = new mydb();
$db->init($dbname);
自己写个init函数传值
$db = new mydb();
$db->init($dbname);
$obj->db = $_SESSION['user'];既然是 public 属性,直接赋值就是了
$db = new mydb();
$db->init($dbname);
s