2015-10-10 1 views
2

я могу передать одно значение к классу так:Как передать несколько значений классу?

class Foo { 

    public $value1; 

    function __construct($var1) { 
     $this->value1 = $var1; 
    } 
} 

$foo = new Foo('value1'); 
print_r($foo); 

Как вы знаете, выход будет выглядеть следующим образом:

Foo Object ([value1] => value1) 

Теперь я хочу знать, как я могу передать несколько значение к классу? На самом деле я хочу этот вывод:

Foo Object ([value1] => value1, [value2] => value2, [value3] => value3) 

ответ

1

Если меня не недоразумение, вы могли бы сделать это путем передачи большего количества параметров конструкции, как:.

class Foo { 

public $value1; 
public $value2; 
public $value3; 

function __construct($var1, $var2, $var3) { 
    $this->value1 = $var1; 
    $this->value2 = $var2; 
    $this->value3 = $var3; 
    } 
} 

$foo = new Foo('value1', 'value2', 'value3'); 
+0

Проголосовало так потому, что? –

+1

Спасибо, +1 upvote для вас. – Shafizadeh

+1

По какой-то причине все проголосовали. Некоторые ответы лучше других, но ни один из них не ошибается. Возможно, иллюстратор хотел бы объяснить. – worldofjr

1

Просто пройти несколько параметров в

class Foo { 

public $value1; 
public $value2; 
public $value3; 

function __construct($var1,$var2,$var3) { 
    $this->value1 = $var1; 
    $this->value2 = $var2; 
    $this->value3 = $var3; 

} 
} 

$foo = new Foo('value1','value2','value3'); 
print_r($foo); 
+1

Спасибо, +1 upvote – Shafizadeh

1

Вы просто разделяете дополнительные значения запятой, а для обратной совместимости вы можете указать значение по умолчанию.

function __construct($var1,$var2=null,$var3=null) { 
    $this->value1 = $var1; 
    $this->value2 = $var2; 
    $this->value3 = $var3; 
} 

Называется так;

$foo = new Foo('value1','value2','value3'); 
2

Передача нескольких значений можно сделать что-то вроде:

function __construct($var1, $var2, $var3) { 
    $this->value1 = $var1; 
    $this->value2 = $var2; 
    $this->value3 = $var3; 
} 

Другой вариант заключается в использовании array в качестве аргумента:

function __construct($array_values) { 
    $this->ar_values = $array_values; 
} 

function getValue($key) 
{ 
    echo $this->ar_values[$key]; 
} 


$foo = new Foo(array('value1','value2','value3')); 
$foo->getValue(1); // echoes 'value2' 

И идет еще дальше, с неизвестным количеством аргументов __construct:

function __construct() { 
    $args = func_get_args(); 
    print_r($args); 
    // do something with this array 
} 
+0

Спасибо, отличный ответ, +1 upvote для вас. – Shafizadeh

3

Commit несколько значений с массивом. И добавьте функцию вывода, например:

class Foo { 
    public $values = array(); 

    function __construct($values) { 
     $this->values = $values; 
    } 

    function output() { 
     foreach ($this->values as $key => $value) { 
      echo $value . "\n"; 
     } 
    } 
} 

$values = ["one", "two", "three"]; 
$f = new Foo($values); 
$f->output(); 
+0

На самом деле это дубликат немного, но +1 – Shafizadeh

+1

Я не вижу дубликата. Никто не делал этого с массивом и функцией вывода. – Sun

+2

Также стоит отметить, что в других ответах вам потребуется переписать свой класс, если вы измените количество параметров, которые вы передаете. Передача в массиве намного сложнее. – andrewsi