我有一个问题,就是在初始化类变量时将会话变量赋值给类变量。
检查我的以下代码
<?php
class ModifyProfile
{
var $userType=$_SESSION['wb_user_type'];
var $tablename=WB_CUSTOMER_TABLE;
var $primarykey="nCustomerID";
}
?>
当我通过创建这个类对象来运行上面的代码时。它为php提供了解析错误。
但是当我将第一个变量声明为空白时,它的工作正常。 请检查正在运行的代码。
<?php
class ModifyProfile
{
var $userType='';
var $tablename=WB_CUSTOMER_TABLE;
var $primarykey="nCustomerID";
}
?>
所以我可以将会话变量分配给类变量,如上所述。
修改
在声明类变量时,public,private和protected关键字有什么用? 我在php5上运行。
由于
答案 0 :(得分:4)
当您指定类变量时,它们实际上不可变。也就是说,它们必须是一个字面值,例如字符串,或者像第二个例子中那样有效的常量。
确定:的
public $foo = 123;
public $bar = "hello";
public $blah = SOME_CONSTANT;
不行:
public $foo = 123 + 45;
public $bar = "hello"
. "world";
public $blah = some_function();
您可能想要的是实例变量。这些是在类构造函数中初始化的,这是一个在创建该类的新实例时运行的函数。
class Foo {
public $bar,
$baths;
public function __construct($blah) {
$this->bar = $_SESSION['bar'];
$this->baths = $blah;
}
}
答案 1 :(得分:4)
一些tipps:
var
,改为使用private
/ protected
/ public
。很好的例子:
<?php
class ModifyProfile
{
protected $tablename=WB_CUSTOMER_TABLE;
public function __construct($user_type) {
$this->userType = $user_type;
}
}
$user_type = isset($_SESSION['wb_user_type']) ? $_SESSION['wb_user_type'] : 'n/a';
$profile = new ModifyProfile($user_type);
?>
答案 2 :(得分:1)
在构造函数中进行赋值。
答案 3 :(得分:1)
尝试:
<?php
class ModifyProfile
{
var $tablename=WB_CUSTOMER_TABLE;
var $primarykey="nCustomerID";
public function __construct() {
$this->userType = $_SESSION['wb_user_type'];
}
}
?>