请教PHP的“$”符号用法?

Shince 2008-07-14 09:43:42
比如说

class MyClass{
private $_val;

public function foo(){
return $this->$_val;
}

public function foo1(){
return $this->_val;
}
......
}

请问上面类中的两个函数中访问 _val变量加不加$符号有何差别?$符号的使用规则?

PHP的手册做的实在让人恼火,它对使用的这些符号没有一个集中的说明,像“::”、“@”、“->”、“=>”、“$”,只能蒙着用,手册的查找功能也弱,搜索什么都找不到,想Google一下吧,这些符号好像被屏蔽掉了,好在还有一个CSDN,哪位高人伸一下手,把这问题给灭了?
...全文
461 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
bumiezhihuo111 2009-04-01
  • 打赏
  • 举报
回复
php变量使用就是很烦~~~
Shince 2008-07-15
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 dada20042030 的回复:]
引用 6 楼 Shince 的回复:
不错不错,$this->$_val 语法解释是通过的,我也是最终发现 $this->_val 是正确的访问上面类中 _val变量的方法,所以才想了解一下$符号的用法。PHP手册的一大特点就是对它的关键字缺少一个说明。

算了,抱怨是不解决问题的,继续凑合着用吧

会通过吗??
[/Quote]

刚才写了一段代码跟踪了一下,由于PHP是弱类型的,所以它把$this->$_val解释成了一个未初始化的变量,所以没有报错。

好了,谢谢各位的热心回答,此帖问题基本解决,结贴散分。
tianyaxiao 2008-07-14
  • 打赏
  • 举报
回复
C++语法
xuzuning 2008-07-14
  • 打赏
  • 举报
回复
见手册的"语言参考"
SICTXK 2008-07-14
  • 打赏
  • 举报
回复
以上说的很详细,不过还漏掉了一个"::"
:: 的作用是直接访问静态类的静态方法 ,不需要实例化类,可以直接访问.
剑心永远OK 2008-07-14
  • 打赏
  • 举报
回复
public function foo(){
return $this->$_val;
}
这样写是错误的。。

$this->_val是正确的。。
Shince 2008-07-14
  • 打赏
  • 举报
回复
在网上找了一篇

php入门基础:php基本符号
来源:PHP幽灵 | 2007-5-12 | (有1922人读过)


注解符号:
// 单行注解
/* */ 多行注解

引号的使用
’ ’ 单引号,没有任何意义,不经任何处理直接拿过来;
" "双引号,php动态处理然后输出,一般用于变数.

变数形态:
一种是True 即 真的;
另一种是False 即假的

常见变数形态:
string 字串(数字\汉字\等等)
integer 整数(1、2、3、4、5、0、-1、-2、等等)
double 浮点数(小数点)
array 阵列
object 物件

常用符号
\" 双引号
\\ 反斜线
\n 换行
\r 送出
\t 跳位(TAB)

运算符号
+ 加法运算 - 减法运算
* 乘法运算 / 除法运算
% 取余数 ++ 累加
-- 累减1 . 把字串相加

设定运算
= 把右边的值代入左边(一定要会)
+= 把右边的值加到左边
-= 把右边的值减到左边
*= 把左边的值乘以右边
/= 把左边的值除以右边
.= 把右边的字串加到左边

位员运算
& 且
| 或
^ 互斥(xor)
<< 向左移位
>> 向右移位
~ 取1的补数

逻辑运算
< 小于 > 大于
<= 小于等于 >= 大于等于
!= 不等于 && 而且
|| 或者 ! 不

其他运算符号
$ 变数符号
& 变数的指标(加在变数前)
@ 不显示错误信息(加在函数前)
-> 物件的方法或者属性
=> 阵列的元素值
? : 三元运算子



anana 2008-07-14
  • 打赏
  • 举报
回复
呵呵 楼上的营销理念很ok
wellpie 2008-07-14
  • 打赏
  • 举报
回复
兄弟,我是厦门维派;你这里有需要域名空间,企业邮局或者是服务器带宽租用的吗,50M独享,或者百独,G口;或者如果你有不少空间需求的话,可以考虑代理,搞点外快。目前我们也在招收代理,利润可以是4.5折 。
需要的朋友,可以直接联系我
QQ 908267931 张先生
MSN:allen-angel@hotmail.com
邮箱:zjc@wellpie.com
lgzxz999 2008-07-14
  • 打赏
  • 举报
回复
若在类的内部的实现中使用类自身的属性或其他方法
需要在"->"属性或方法前加"$shis"
表明使用的是自身成员
而此时属性前不再有"$"
剑心永远OK 2008-07-14
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 Shince 的回复:]
不错不错,$this->$_val 语法解释是通过的,我也是最终发现 $this->_val 是正确的访问上面类中 _val变量的方法,所以才想了解一下$符号的用法。PHP手册的一大特点就是对它的关键字缺少一个说明。

算了,抱怨是不解决问题的,继续凑合着用吧
[/Quote]
会通过吗??
Shince 2008-07-14
  • 打赏
  • 举报
回复
PHP的语法,大家都靠猜


原文出处:http://www.wangchao.net.cn/bbsdetail_14848.html

  /*self的特点*/
  class a
  {...
   public static $a1 ="我是类a";
   function ca ()
   {...
   echo "这是类a:".self ::$a1 ;
   //self的特点是:只能访问静态变量(static)
   echo "";
   //输出结果:a1
  
   }
  }$o =new a ;
  $o ->ca ();
  /*[dollar]this,parent的特点*/
  class b
  {...
   public $b1 ="我是类b";
   public static $b2 ="b2";
   function cb ()
   {...
   echo "这是类b:". $this ->b1 ;
   //最普通的访问方法;输出:b1
   echo "";
   echo $this ->b2 ;
   //[dollar]this就不能访问static变量了;没有任何输出
  
   }
  }$b1 =new b ;
  $b1 ->cb ();
  class eb extends b
  {...
   function c ()
   {...
   echo "这是类eb,执行多一次类b了:".parent ::cb ();
   echo "";
   //parent的意思是指向extends的b类,和b::cb()一样,
   //当然也可以使用b::cb()这样访问,但以后修改起来就会很麻烦
  
   }
  }$eb1 =new eb ;
  $eb1 ->c ();
  /*::的特点*/
  class t1
  {...
   public $tt1 ="tt1";
   function t1_fun ()
   {...
   echo "我不是类,只是函数.怎样?!这是在没有实例化对象情况下输出的!";
   echo $this ->tt1 ;
   //在对象没有实例时,这样的调用是错误的!
  
   }
  }t1 ::t1_fun ();
  //这是::的特点,可以在没有实例对象时,就直接调用类里的函数,注意:纯粹是函数而已
Shince 2008-07-14
  • 打赏
  • 举报
回复
不错不错,$this->$_val 语法解释是通过的,我也是最终发现 $this->_val 是正确的访问上面类中 _val变量的方法,所以才想了解一下$符号的用法。PHP手册的一大特点就是对它的关键字缺少一个说明。

算了,抱怨是不解决问题的,继续凑合着用吧

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧