建议您养成一个良好的代码规范$db = new mydb('host','user','pwd','db');// mydb这个类里有query($sql)的方法;//下面一个类要用到这个连接类$ss = new $ask($db,$sql,xxxxxxx);class ask{
var $db; function ask($object,$str,xxxx){ $this->db=$object; $rs = $this->db->query($str); } }
晕了,我知道格式,我也会,就是本地测试的时候我放不进去类呀。 class ask{ var $object; function ask($db/*$db是一个类*/){ $this->object = $db; //把类传给OBJECT,那么我就理所当然的可以用: $object->$db->query($sql);//我是不是能用这里面的方法 了?从理论上讲?但事实上我用不了! //那只有extends了那用的时候就只有 father :: query($sql);也不行。试了N次,没有信心 了。如果哪位大哥把问题给我办了,给分! }}
用继承,没有你这样传的 $db = new mydb('host','user','pwd','db');class ask extends mydb{ var $object; function ask(){ paraent::mydb('host','user','pwd','db'); $this->$db->query($sql); }}
public function Mydb($h,$u,$p,$d) { $this->host = $h; $this->user = $u; $this->pwd = $p; $this->db = $d; $this->conect(); $this->selectDb(); }
public function conect(){//连接 $this->link = @mysql_connect($this->host,$this->user,$this->pwd) or die("连接失败".mysql_error()); }
public function selectDb(){//选择库 @mysql_select_db($this->db,$this->link) or die("数据库不存在".mysql_error()); }
public static function query($sql){//RUN语句 @mysql_query("set names 'utf8';"); return @mysql_query($sql); } }//无限级FUNCTION: function showMenu($id,$db) { $rs = $db->query("select * from product_class where F_id = $id order by id asc ;"); while ($rss = mysql_fetch_row($rs)){ echo "\n<ul>"; echo "<li>"; echo $rss[1]; showMenu($rss[0],$db); echo "</li>\n"; echo "</ul>";
写了个例子,不知道是不是楼主想要的:class testa{ private $parm1; private $parm2; public function testa($name,$sex){ $this->parm1 = $name; $this->parm2 = $sex; } public function getInfo(){ return "hi,".$this->parm1." you age is ".$this->parm2; } }class testb{ public function testb(){
} public function conna($obj){ return $obj->getInfo(); } }$t1 = new testa("coder",24); $t2 = new testb(); echo $t2->conna($t1);
写了个例子,不知道是不是楼主想要的:class testa{ private $parm1; private $parm2; public function testa($name,$sex){ $this->parm1 = $name; $this->parm2 = $sex; } public function getInfo(){ return "hi,".$this->parm1." you age is ".$this->parm2; } }class testb{ public function testb(){
} public function conna($obj){ return $obj->getInfo(); } }$t1 = new testa("coder",24); $t2 = new testb(); echo $t2->conna($t1);
var $db; function ask($object,$str,xxxx){ $this->db=$object; $rs = $this->db->query($str); }
}
class ask{
var $object; function ask($db/*$db是一个类*/){
$this->object = $db;
//把类传给OBJECT,那么我就理所当然的可以用:
$object->$db->query($sql);//我是不是能用这里面的方法 了?从理论上讲?但事实上我用不了!
//那只有extends了那用的时候就只有 father :: query($sql);也不行。试了N次,没有信心 了。如果哪位大哥把问题给我办了,给分!
}}
$db = new mydb('host','user','pwd','db');class ask extends mydb{
var $object; function ask(){
paraent::mydb('host','user','pwd','db'); $this->$db->query($sql); }}
private $host; #主机
private $user; #用户名
private $pwd; #密码
private $db; #库
private $link; #资源
public function Mydb($h,$u,$p,$d) {
$this->host = $h;
$this->user = $u;
$this->pwd = $p;
$this->db = $d;
$this->conect();
$this->selectDb();
}
public function conect(){//连接
$this->link = @mysql_connect($this->host,$this->user,$this->pwd) or die("连接失败".mysql_error());
}
public function selectDb(){//选择库
@mysql_select_db($this->db,$this->link) or die("数据库不存在".mysql_error());
}
public static function query($sql){//RUN语句
@mysql_query("set names 'utf8';");
return @mysql_query($sql);
}
}//无限级FUNCTION:
function showMenu($id,$db)
{
$rs = $db->query("select * from product_class where F_id = $id order by id asc ;");
while ($rss = mysql_fetch_row($rs)){
echo "\n<ul>";
echo "<li>";
echo $rss[1];
showMenu($rss[0],$db);
echo "</li>\n";
echo "</ul>";
}
}
//明白了吗?//我要这样调用:showMenu(0,new Mydb('localhost','root','123456','Pen'));
class ask{
var $db;
var $sql = "";
function __construct($db,$sql)
{
$this->db = $db;
$this->sql = $sql;
}
function abc(){
$this->db->query($this->sql);
}
}
调用时这样写
$db=new my......;
$sql="select .....";
$tmp = new ask($db,$sql);这样的方法肯定是可以的,我就是这么用的,肯定没问题的
private $parm1;
private $parm2;
public function testa($name,$sex){
$this->parm1 = $name;
$this->parm2 = $sex;
}
public function getInfo(){
return "hi,".$this->parm1." you age is ".$this->parm2;
}
}class testb{
public function testb(){
}
public function conna($obj){
return $obj->getInfo();
}
}$t1 = new testa("coder",24);
$t2 = new testb();
echo $t2->conna($t1);
private $parm1;
private $parm2;
public function testa($name,$sex){
$this->parm1 = $name;
$this->parm2 = $sex;
}
public function getInfo(){
return "hi,".$this->parm1." you age is ".$this->parm2;
}
}class testb{
public function testb(){
}
public function conna($obj){
return $obj->getInfo();
}
}$t1 = new testa("coder",24);
$t2 = new testb();
echo $t2->conna($t1);
但LZ的代码看起来不应该这样应该用继承没有工具随便写的代码 一个缓存应用 前端和后端
前端负责序列化数据后端负责存储<?php
class cache{
var $write;
function __construct($write)
{
$this->write = $write;
}
function set($name, $value)
{
$result = serialize($value);
$this->write->write($name, $value);
}
}
class cache_file
{
function write($name, $value)
{
$fp = fopen($name);
fwrite($fp, $value);
}
}$cache = new cache(new cache_file());