PHP变量使用其他变量作为类中的初始值

时间:2015-02-22 13:57:50

标签: php class

我有一个类,我正在初始化一些变量。我将第一个变量设置为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;
?>

2 个答案:

答案 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;
    }
}