在开始时声明没有var符号的变量?

时间:2011-08-18 00:22:08

标签: php smarty declaration

我见过上课时var _hello_kitty = array();为什么他们不使用$?我试图将其设为publicstatic,如果不添加$则无效。 public static $_hello_kitty = array();

现在当我添加$ _hello_kitty引用它的其他函数时,$this->_tpl_vars[$tpl_var] = &$value停止工作。

编辑:OOOPS是我的坏我不知何故从那里删除$,我循环原始文件及其在那里。但它仍然引用self::_tpl_vars[$tpl_var];而没有$,我无法使用array_merge() [function.array-merge]: Argument #1 is not an array i

现在我确实使用了self :: $ _ tpl_vars [$ tpl_var];但现在错误出现{{1}}

3 个答案:

答案 0 :(得分:1)

你使用的是smarty,看起来你正在使用类4变量的PHP 4表示法:

var

它的PHP 5表示是:

public

但是您不需要更改代码,因为PHP是向后兼容的。请保留原样,以提醒事情发生变化,对于您自己的代码,您将无法使用var

如果您实际上需要来更改代码,因为它会中断(而不是因为您想要更改代码而中断代码),您会很早就注意到。

答案 1 :(得分:0)

这就是PHP类属性的语法如何工作。

使用美元符号定义属性,例如

public $publicProperty;
protected $protectedProperty;
private $privatePropertyKeepOutLulz;

当从类实例(即对象)引用它们时,省略美元符号,例如

$obj->publicProperty;
$this->protectedProperty;
$this->privatePropertyKeepOutLulz;

更新

使用static关键字

声明静态属性
public static $publicStaticProperty;
private static $privateStaticProperty;

然后你这样引用它们

// From outside the class (only applies to public properties)
ClassName::$publicStaticProperty;

// From within the class
self::$privateStaticProperty;

// From a descendant class (public or protected only)
parent::$property;

答案 2 :(得分:0)

在PHP中,变量以美元符号为前缀,这是编程语言的sigil。这是计算中的一个重要概念,它是PHP能够识别变量的唯一方法。

来自wikipedia(永远不会说谎):

  

在主要受Perl启发的PHP语言中,“$”先于   任何变量名称。没有前缀的名称被认为是常量   或功能。

就是这样。