PHP-php类成员变量初始化的问题?

发布于 2016-11-05 06:42:01 字数 406 浏览 1499 评论 3

示例代码如下:

class A
{
private $randNum = rand(1,100);
//private $randNum;

public function __construct()
{
//$this->randNum = rand(1,100);
}

public function getRandNum()
{
return $this->randNum;
}
}

$a = new A;
echo $a->getRandNum().PHP_EOL;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

瑾兮 2017-09-01 16:44:12

PHP类中,若要初始化成员属性,那么成员属性的初始值必须是一个常数,如果不是常数(如变量),则会报错,所以,如果你要初始化就只能是在构造函数里进行初始化,不过你可以写一个方法,这样就可以在构造函数里批量初始化,不用写那么多的$this->变量名称,而且还支持非常数的初始化。这是最简单的,如果你还想增加访问控制,可以相对改一下就行了

 <?php
Class A{
function __construct(){
$vars = array(
'x' =>'china',
'y' => 'beijing',
'z' => rand(),
);
$this->initVar($vars);
}
function initVar($vars){
if(!empty($vars)){
foreach($vars as $var => $val){
$this->$var = $val;
}
}
}

function getVar($var){
return $this->$var;
}
}

$a = new A();
echo $a->getVar('z');
?>

瑾兮 2017-07-30 14:46:41

在java中,习惯上一个类的构造函数会给一个无参的和一个全参的。
成员变量如果未进行初始化,习惯上会写好所有变量的set和get方法,到目前为止,还是感觉java的做法很规范,而php的做法总给人一种缺少零件的感觉。

夜无邪 2017-01-05 00:10:06

初始化的变量以数组的形式传递进去,类的内部通过通过一个函数获取类的所有属性,通过一次循环进行变量的初始化,代码如下:

class A
{
private $var1;
private $var2;
private $var3;
private $var4;

public function __construct()
{
//$this->randNum = rand(1,100);
}

public function init($init = array())
{
foreach(get_class_vars(get_class($this)) as $self_var => $val) {
if(isset($init[$self_var])) {
$this->$self_var = $init[$self_var];
}
}
}
}

$a = new A;
$a->init(array('var1'=>2));

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文