(PHP)通过循环声明类属性

时间:2017-09-06 14:21:03

标签: php

我想使用循环在类中创建属性。

    <div class="container-fluid">
      <div class="row">
        <h4 class="text-center">Langages</h4>
        <noscript style="position: absolute;top: 75px;left: 180px;">
          Impossible d'afficher l'animation sans JavaScript.
        </noscript>
      </div>

      <div class="row">
        <div class="col-md-2">
          <p>HTML5</p>
        </div>
        <div class="col-md-10">
          <p>
            <span id="bar-one" class="bar" style="width: 94.9995%; overflow: hidden;"></span>
          </p>
        </div>
      </div>

      <div class="row">
        <div class="col-md-2">
          <p>CSS3</p>
        </div>
        <div class="col-md-10">
          <p>
            <span id="bar-two" class="bar" style="width: 85.0002%; overflow: hidden;"></span>
          </p>
        </div>
      </div>

      <div class="row">
        <div class="col-md-2">
          <p>Javascript</p>
        </div>
        <div class="col-md-10">
          <p>
            <span id="bar-three" class="bar" style="width: 30.0009%; overflow: hidden;"></span>
          </p>
        </div>
      </div>

      <div class="row">
        <div class="col-md-2">
          <p>jQuery</p>
        </div>
        <div class="col-md-10">
          <p>
            <span id="bar-four" class="bar" style="width: 39.9988%; overflow: hidden;"></span>
          </p>
        </div>
      </div>

      <div class="row">
        <div class="col-md-2">
          <p>PHP</p>
        </div>
        <div class="col-md-10">
          <p>
            <span id="bar-five" class="bar" style="width: 39.9997%; overflow: hidden;"></span>
          </p>
        </div>
      </div>
    </div>

当我这样做时,我收到错误

  

FATAL ERROR语法错误,意外&#39;对于&#39; (T_FOR),期待功能(T_FUNCTION)

我理解这完全错误还是语法错误?感谢

3 个答案:

答案 0 :(得分:0)

你可以做的是循环上课的constructor

class Example{
    public function __construct(){
        for($i=0; $i<5; $i++)
            $this->{'num' . $i} = $i;
    }
}

然后,您只需创建一个示例的新实例:

$obj = new Example();

哪会给你这样一个对象:

object(Example)#1 (5) {
  ["num0"]=>
  int(0)
  ["num1"]=>
  int(1)
  ["num2"]=>
  int(2)
  ["num3"]=>
  int(3)
  ["num4"]=>
  int(4)
}

答案 1 :(得分:0)

你正在做的是错误的sytax。 除了方法或属性声明之外,您无法直接在课堂上进行任何操作。

要创建动态属性,请点击this link

像这样(Source:

class Test{
    public function createProperty($propertyName, $propertyValue){
        $this->{$propertyName} = $propertyValue;
    }
}

$test = new Test();
$test->createProperty('property1', '50');
echo $test->property1;

答案 2 :(得分:0)

您可以使用构造函数来实现此目的:

class Example           
{
   public function __Construct(){
      for( $i=0; $i<5; $i++ )  
      {   
       public $this->{'num' . $i};
      }
    }

}

在构造函数中,您可以执行操作。 Reference

实现这一目标的另一种方法是:

class Example           
{
  public $num = array();
   public function fun(){
      for( $i=0; $i<5; $i++ )  
      {   
        $this->num[$i] = 'value';
      }
    }

}

将变量作为数组。