2013-11-07 3 views
0

У меня есть эта функция (в файле functions.php), которая возвращает мне список пользователей в базе данных.Использовать внешний массив внутри класса PHP

function db_listar_usuarios(){ 
    $link = db_connect(); 
    $query = "select * from usuarios" or die("Problemas en el select: " . mysqli_error($link)); 
    $result = $link->query($query); 
    $myArray = array(); 
    while($row = mysqli_fetch_assoc($result)) { 
     $myArray[$row['nombre']] = $row; 
     //print_r($myArray); // for debugging 
    } 
    return $myArray; 
    //print_r($myArray); 
} 

и я хочу использовать его в классе, который находится в другом файле (server.php)

<?php 
include('functions.php'); 

class Server {  
    private $contacts = db_listar_usuarios(); //<-- this doesn't work =(
... 
} 

Что я могу сделать, чтобы сделать этот код работать?

Спасибо!

ответ

1

Вы не можете вызвать функцию в этом положении. Когда вы объявляете переменные класса, они должны быть константами (см.: http://www.php.net/manual/en/language.oop5.properties.php).

Для этого вам нужно использовать конструктор.

<?php 
include('functions.php'); 

class Server {  
    private $contacts; 

    function __construct(){ 
     $this->contacts = db_listar_usuarios(); 
    } 
} 
+0

совершенен! Отличный ответ! – ScaZ

+0

Рад, что я мог помочь! :-D –

1

PHP не позволяет устанавливать динамические значения в объявлении свойства. Вы не можете вызвать функцию в этом месте.

Вы должны переместить этот вызов функции конструктора, который автоматически вызывается, когда экземпляр этого класса создается:

private $contacts; 

public function __construct() { 
    $this->contacts = db_listar_usuarios(); 
} 
+0

Большое вам спасибо за ваш ответ, он отлично работает! – ScaZ

Смежные вопросы