带参数的PHP构造函数
我需要这样做的function:
$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; } }
阅读所有这个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; } } }
请注意,构造函数用于创build和初始化对象,因此可以使用$this
来使用/修改正在构build的对象。