2017-01-06 3 views
0

У меня есть следующие коды.Свойства класса Php get и set

<?php 
class Reg { 
    private $pros = array(); 
    public function __set($key,$val) { 
     $this->pros($key)= $val; 
    } 

    public function __get($key) { 
      return $this->pros($key); 
    }  
} 
$reg= new Reg; 
$reg->tst="tst"; 
echo $reg->tst; 
?> 

Но при выполнении этого скрипта я получил следующую ошибку.
Неустранимая ошибка: нельзя использовать возвращаемое значение метода в контексте записи в строке 5

Я считаю, что добавление элемента в массив возможно, как указано выше.

$array = array();  
$array('key')='value'; 

Просьба пояснить, что я был неправ.
Thanks

+3

Почему с помощью круглых скобок, используйте квадратные скобки и проверить – rahulsm

+0

'$ this-> профи [$ ключ]' – bansi

ответ

0

Это из-за того, что вы пытаетесь установить возвращаемое значение функции. $this->pros($key) означает звонки pros($key) функция. Не задано значение $pros.

Синтаксис неправильный. Установка значения array быть -

$array['index'] = 'value'; 

Изменить

$this->pros($key)= $val; ->$this->pros[$key]= $val;

и

return $this->pros[$key]; 

Working code

0
$this->pros[$key] = $value; 

ИЛИ

$keys = array($key); 
$this->pros = array_fill_keys($keys,$value); 

В array_fill_keys() функция заполняет массив со значениями, с указанием клавиш.

Синтаксис:

array_fill_keys(keys,value); 
Смежные вопросы