请高手解决php中小弟关于$这个符号的疑问!~~~ php中类定义了一个$name,但是为什么在用$this->name,引用时,name前不用$呢?就是为什么不是$this->$name 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 因为这就是类,因为这就是php.哈哈哈 类中声明的成员(即类中变量),访问的时候就是要用$this->name.你在类外声明类实例的时候,也要这样访问,如:$obj = new Abc();echo $obj->name; 很简单,$ 放在前面了$this->name$ 变量声明this 归属-> 对象成员name 变量名 很简单,$ 放在前面了$this->name$ 变量声明this 归属-> 对象成员name 变量名 $(this->name) 这样好理解,哈哈哈 ,我是瞎说的,不要听我的... 有没有这么用$this->$name?的情况 有啊,你打算测试一下php错误提示功能的时候。 因为就是这样规定的,就像为什么叫PHP一样。哈哈 我的理解:$this $表示对象的引用。 $this->name ->name:表示属性。 就好象 User.name 一样。 哈哈,我也是菜鸟,刚学习PHP。打酱油路过。 有啊,变量的变量$name = 'name';echo $this->$name; 进行了测试<?php function a(){ $name = 'name'; echo $this->$name; }a();?>出现错误:Fatal error: Using $this when not in object context in 这是为什么呢? this是引用该类内部定义的边变量的关键字,你要把this->name看作是name,这样理解起来就比较容易。$this->name就等价于$name.你要弄清楚this关键字的意义。很简单的就会解决你所产生的疑问。 是有的,比如一个类里需要连接两个不同的数据库class a{ protected $dzconn; protected $dbconn; protected function conn($conn) { if (!$this->$conn) { if ($conn == 'dzconn') { $host = 'a'; $user = 'u1'; $pwd = 'p1'; } elseif ($conn == 'dbconn') { $host = 'b'; $user = 'u2'; $pwd = 'p2'; } $this->$conn = mysql_connect($host, $user, $pwd); mysql_query("SET NAMES gbk", $this->$conn); } } }这样写就不用重复写两个函数了 你可以$this->$name,不过这样看着不是多美观。$this->name这样简捷、方便 name 不是变量名,是属性或者方法名。规定如此。 php如何按顺序排列数组?还有,如何判断一个数组的某个值已经存在 关于列表调用帖子内容排除字符,高手帮忙下 那位大虾帮下帮,谢谢了。(表单的菜单用数组实现) 关于Smarty生成静态页面的一些疑问 关于eval()老是出错 textarea英文换行的问题 一个烦人的繁体显示/输入问题,大家救命啊 求一正则.匹配超级连接的. 调查:你做PHP开发是一个人开发还是团队? 在RedHat8.0(其中apache2.0,MySQL3.23.52)中用phpMyAdmin(Version2.3.3)的问题 服务器经常会短线几分钟是怎么回事? PHP 不登陆访问商品 保存浏览过的商品 cooKie问题
你在类外声明类实例的时候,也要这样访问,如:
$obj = new Abc();
echo $obj->name;
$ 变量声明
this 归属
-> 对象成员
name 变量名
$ 变量声明
this 归属
-> 对象成员
name 变量名
有没有这么用$this->$name?的情况
有啊,你打算测试一下php错误提示功能的时候。
哈哈,我也是菜鸟,刚学习PHP。打酱油路过。
echo $this->$name;
$name = 'name';
echo $this->$name;
}
a();
?>
出现错误:Fatal error: Using $this when not in object context in
这是为什么呢?
是有的,比如一个类里需要连接两个不同的数据库class a
{
protected $dzconn;
protected $dbconn;
protected function conn($conn)
{
if (!$this->$conn)
{
if ($conn == 'dzconn')
{
$host = 'a';
$user = 'u1';
$pwd = 'p1';
}
elseif ($conn == 'dbconn')
{
$host = 'b';
$user = 'u2';
$pwd = 'p2';
}
$this->$conn = mysql_connect($host, $user, $pwd);
mysql_query("SET NAMES gbk", $this->$conn);
}
}
}这样写就不用重复写两个函数了
$this->name这样简捷、方便
是属性或者方法名。
规定如此。