我有一个类,我正在初始化一些变量。我将第一个变量设置为100
,然后我想将其用于接下来的几个变量。
我的IDE出现以下错误,代码不会打印我的变量:
syntax error, unexpected '$defaultWidthHeight' (T_VARIABLE)
不起作用:
class generateRandomThumbnails
{
private $defaultWidthHeight = 100;
private $width = $defaultWidthHeight; // This is not allowed?
private $height = $defaultWidthHeight; // This is not allowed?
public function echoTest(){
return $this->height;
}
}
输出:没什么!
有效吗
class generateRandomThumbnails
{
private $defaultWidthHeight = 100;
private $width = 100; // This is allowed.
private $height = 100; // This is allowed.
public function echoTest(){
return $this->height;
}
}
输出:100
我如何调用该功能:(我不认为这与我的示例有关,但包括我在这里做错了什么)
<?php
require_once 'generateRandomThumbnail.php';
$image = new generateRandomThumbnail();
$test = $image->echoTest();
echo $test;
?>
答案 0 :(得分:1)
您无法分配&#34;动态&#34;类声明中的类属性的值。您可以像对待每个属性一样分配100,也可以像在评论中所说的那样在构造函数中进行分配。
有关课程属性的详细信息,请参阅手册:http://php.net/manual/en/language.oop5.properties.php
从那里引用:
此声明可能包含初始化,但此初始化必须是常量值 - 也就是说,必须能够在编译时评估和不得依赖于运行时信息才能进行评估。
答案 1 :(得分:0)
基于Rizier123,John Conde和Dvir Azulay,有两种主要方法可以实现这一目标:
使用构造函数:
class generateRandomThumbnail
{
private $defaultWidthHeight = 150;
private $width = 0;
private $height = 0;
function __construct(){
$this->width = $this->defaultWidthHeight;
$this->height = $this->defaultWidthHeight;
}
public function echoTest(){
return $this->height;
}
}
使用常量:
class generateRandomThumbnail
{
const DEFAULT_SIZE = 150;
private $width = self::DEFAULT_SIZE;
private $height = self::DEFAULT_SIZE;
public function echoTest(){
return $this->height;
}
}