首页 > 后端开发 > php教程 > 泪中求oop 展示策略

泪中求oop 展示策略

WBOY
发布: 2016-06-13 11:08:16
原创
827 人浏览过

泪中求oop 显示策略
1.基本情况
oop写的conn连接mysql的类,系统中所有用到数据库的类来extends它。
此类部分内容见下:

<br />class db{<br />	public $conn;<br />    private static $h = "localhost";<br />    private static $u = "root";<br />    private static $p = "123123";<br />    public $db = "wms";//此外是变化的,换句说wms不是固定的,是变化的。user1登录时,$db="user1";user2登录时,$db="user2";<br />
登录后复制

2.
因为$db是变化的,不是固定的。我一开始用$db=$_SESSION['user']但是类中不能用session.
请问如何实现呢?
3.
此法子除外。
$obj=new db($db);//通过析构函数。此法子不能用。因为其他原因,反正不能使用。
------解决方案--------------------
1.这样完成继承链接类
require_once 'db.php';<br />class userDao extends db{}
登录后复制

2.①最好不要这样设计数据库,后面拓展和维护起来很复杂,LZ需要考虑到不同的情况,最好从多个表,或者多个字段下手。
②session的值想传到类中处理,先经过PHP处理页面(我们一般叫他控制层),用访问类方法的方式传。
比如:user1登录后 处理页面标记为1 在访问数据库前 把1传入类 好让他知道调用哪个数据库 不过还是建议不要把数据库设计得太复杂
3.LZ为什么要在析构函数中实例化对象呢?一般析构函数是用来销毁对象,释放空间的。LZ要初始化对象的话,应该是在构造函数中做的。
__construct()
  
------解决方案--------------------
为什么反正不能用构造函数…………
------解决方案--------------------
不是说了么


自己写个init函数传值
$db = new mydb();
$db->init($dbname);
------解决方案--------------------
1 男子汉,大丈夫, 不要动辄眼泪~
2 对这些问题,做为学习研究,无可厚非,真到产品项目开发,没有深厚的功力之前,建议先从使用框架开始。
而框架里面,通常对 db 类会有良好的封装,你也不用去折腾太多了。
------解决方案--------------------
$obj = new db();
$obj->db = $_SESSION['user'];

既然是 public 属性,直接赋值就是了

------解决方案--------------------
自己写个init函数传值
$db = new mydb();
$db->init($dbname); 
s

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板