cprogcr
cprogcr

Reputation: 469

Parsing error in PHP (Zend Framework)

i have this code:
protected $val = Zend_Registry::get('values');

Whenever I put this piece of code I get:
Parse error: syntax error, unexpected '(', expecting ',' or ';' in ...

Why is it happening?

Upvotes: 1

Views: 220

Answers (3)

martynthewolf
martynthewolf

Reputation: 1708

Because that looks like a class variable and you cant assign data to a class variable like that.

See here http://www.php.net/manual/en/language.oop5.properties.php

You could do it like this.

class something {
    protected $_val;

    public function __construct()
    {
        $this->_val = Zend_Registry::get('values');
    }
}

Upvotes: 0

Zombaya
Zombaya

Reputation: 2258

You can not use the return-value of a function for the initial value of a class-variable.

You can however set it in the constructor of the class.

class Myclass{
     protected $val;

     public function __construct(){
          $this->val = Zend_Registry::get('values');
     }
}

Upvotes: 3

Michael Berkowski
Michael Berkowski

Reputation: 270607

You cannot use a function call or other dynamic expression to initialize a class property. It can only be a constant or atomic value. If you need to initialize it with a function call, you must do this instead inside the constructor.

protected $val = NULL;

public function __construct() {
  $this->val = Zend_Registry::get('values');
}

From the docs:

This declaration may include an initialization, but this initialization must be a constant value--that is, it must be able to be evaluated at compile time and must not depend on run-time information in order to be evaluated.

Upvotes: 4

Related Questions