Home  >  Article  >  Backend Development  >  泪中求oop 展示策略

泪中求oop 展示策略

WBOY
WBOYOriginal
2016-06-13 12:58:00691browse

泪中求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

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn