如何在类中分配多个变量?

时间:2014-02-04 13:24:22

标签: php class variables assign

如何在PHP中一次分配多个变量?这基本上就是我想要实现的,但它会在private $from = private $to syntax error, unexpected 'private'上抛出解析错误:

<?php
namespace Library;

class Localize
  {
  // Default data for both fields. Localization must be specified.
  private $from = private $to = array(
    'language' => 'en',     // Language: English
    'country'  => 'usa',    // Country: USA
    'currency' => 'dollar', // Currency: dollar $
    'units'    => 'is',     // Units: International System[meter, kelvin, etc]
    'timezone' => '-5'      // Timezone: UTC -5 hours [America/New_York]
    );

  // ...
  }

我已经尝试private $from = private $toprivate $from = $to,但两者都会抛出错误。 在PHP类中一次分配多个属性的正确语法是什么?

注意:我知道有很多方法可以像构造函数一样处理这个问题,但是我想知道我想要实现的目标是否可行。

6 个答案:

答案 0 :(得分:2)

你为什么要那样做?将类视为实体的模式。该实体通常不定义任何数据。在创建类的具体对象时处理数据。您通常会在类的构造函数中为类成员分配值。所以我会在构造函数中进行初始化。

答案 1 :(得分:1)

Php语法不允许这样做,但您可以在构造函数中执行此操作:

public function __construct() {
    $this->to = clone $this->from;
}

答案 2 :(得分:1)

更好的想法是使用单个数组来存储类的所有属性

private $_arLoc = array();

然后,在构造函数

中赋值
$_arLoc[ 'from' ] = array(
    'language' => 'en',     // Language: English
    'country'  => 'usa',    // Country: USA
    'currency' => 'dollar', // Currency: dollar $
    'units'    => 'is',     // Units: International System[meter, kelvin, etc]
    'timezone' => '-5'      // Timezone: UTC -5 hours [America/New_York]
);

$_arLoc[ 'to' ] = $_arLoc[ 'from' ];

答案 3 :(得分:0)

总之,不,你不能。您必须在实例化时定义它们。

答案 4 :(得分:0)

这有用吗?取决于您想要使用它的目的。

class Localize
    {
    // Default data for both fields. Localization must be specified.


    private $to = array(
    'language' => 'en',     // Language: English
    'country'  => 'usa',    // Country: USA
    'currency' => 'dollar', // Currency: dollar $
    'units'    => 'is',     // Units: International System[meter, kelvin, etc]
    'timezone' => '-5'      // Timezone: UTC -5 hours [America/New_York]
    );
    private $from ;

    function __construct(){
            $this->from = $this->to;
    }
    function __destruct(){

    }

    // ...
}

$var = new Localize();

var_dump($var);

答案 5 :(得分:-2)

我想你已经说过$ to array是私有的!

尝试:       private $ from = $ to = array(