Примечание: преобразование массива в строку - почему? - PullRequest
3 голосов
/ 02 августа 2010

Привет, я пытаюсь выполнить следующий код PHP, однако я получаю сообщение об ошибке. Я передаю ссылку в основной класс, который я хочу присвоить переменной в пределах области видимости ..

Примечание: преобразование массива в строку

Заранее спасибо ..

$core = new core($config);
$core->execute();   

class core
{
   private $config;

   public function __construct(&$config)
   {
      $this->$config = $config;
   }

   public function execute()
   {
      $this->set_path();
   }

   private function set_path()
   {
      return true;      
   }  
}

Ответы [ 4 ]

12 голосов
/ 02 августа 2010

Ну, во-первых ....

$this->$config

Второй $ в $config должен быть удален, так как в противном случае он пытается получить доступ к переменной с именем, заданным строкой в ​​$config.(например, если $ config содержит "test" в качестве значения, вы получите доступ к переменной "test" в вашем классе: $this->test)

Что такое $config, когда она передается, в любом случае?(Строка, массив, объект и т. Д.?)

1 голос
/ 02 августа 2010

$this->config = $config;

1 голос
/ 02 августа 2010

private $ config = array ();

0 голосов
/ 02 августа 2010

Это работает без ошибок в php 5.2.
Какую версию php вы используете?

<?php
class core
{
   private $config;

   public function __construct(&$config)
   {
      $this->config = $config;
   }

   public function execute()
   {
      $this->set_path();
   }

   private function set_path()
   {
      return true;      
   }  
}

$config=array(
     'a'    => '1'
    ,'b'    => '2'
    );

$core = new core($config);
$core->execute();
...