PHP-конструктор с параметром

Мне нужна функция, которая сделает что-то вроде этого:

$arr = array(); // this is array where im storing data $f = new MyRecord(); // I have __constructor in class Field() that sets some default values $f->{'fid'} = 1; $f->{'fvalue-string'} = $_POST['data']; $arr[] = $f; $f = new Field(); $f->{'fid'} = 2; $f->{'fvalue-int'} = $_POST['data2']; $arr[] = $f; 

Когда я пишу что-то вроде этого:

 $f = new Field(1, 'fvalue-string', $_POST['data-string'], $arr); $f = new Field(2, 'fvalue-int', $_POST['data-integer'], $arr); // description of parameters that i want to use: // 1 - always integer, unique (fid property of MyRecord class) // 'fvalue-int' - name of field/property in MyRecord class where next parameter will go // 3. Data for field specified in previous parameter // 4. Array where should class go 

Я не знаю, как сделать параметризованный конструктор в PHP.

Теперь я использую конструктор следующим образом:

 class MyRecord { function __construct() { $default = new stdClass(); $default->{'fvalue-string'} = ''; $default->{'fvalue-int'} = 0; $default->{'fvalue-float'} = 0; $default->{'fvalue-image'} = ' '; $default->{'fvalue-datetime'} = 0; $default->{'fvalue-boolean'} = false; $this = $default; } } 

Solutions Collecting From Web of "PHP-конструктор с параметром"

Прочтите все это http://www.php.net/manual/en/language.oop5.decon.php

Конструкторы могут принимать такие параметры, как любая другая функция или метод в php

 class MyClass { public $param; public function __construct($param) { $this->param = $param; } } $myClass = new MyClass('foobar'); echo $myClass->param; // foobar 

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

Кроме того, вам не нужны фигурные скобки при каждом доступе или настройке свойства. $object->property работает нормально. Вам нужно использовать только фигурные скобки при особых обстоятельствах, например, если вам нужно оценить метод $object->{$foo->bar()} = 'test';

Если вы хотите передать массив в качестве параметра и «авто» заполнить ваши свойства:

 class MyRecord { function __construct($parameters = array()) { foreach($parameters as $key => $value) { $this->$key = $value; } } } 

Обратите внимание, что конструктор используется для создания и инициализации объекта, поэтому можно использовать $this для использования / изменения объекта, который вы создаете.