PHP 有对象 Return 不同的对象
PHP Have Object Return Different Object
我在几个不同的地方打电话:
$model=NEW MakeCall($form);
我已经更新了 MakeCall
class 几项更改,我想在给定日期后生效。我把原来的class改名为MakeCallOld
我怎样才能把电话留给:
$model=NEW MakeCall($form);
完整并在 MakeCall
内执行此操作:
class MakeCall
{ ...
public function __construct($form)
{
//Use Legacy MakeCallOld for stuff before 2016-10-01
if ($form['date']<'2016-10-01') {
$object=NEW MakeCallOld($form);
return $object;
}
$this->perform several functions and set variables...
这目前只是 returns class MakeCallOld
的一个空对象,但 运行 MakeCallOld
中的构造函数似乎没有,因为所有属性都是空的。我只想将 MakeCallOld
的整个对象放入 $model
.
构造函数没有 return 值,所以说 return $object
你只是在那里结束控制流,什么都不做,永远不会到达 "perform several functions and set variables"。根据您的结构,您应该考虑让 MakeCall
继承自 MakeCallOld
,然后您可以简单地在 MakeCall
的构造函数中调用 parent::__construct();
。
您需要的是静态工厂构造函数。这是您应该根据参数添加初始化逻辑或切换构造函数的方式。
class MakeCall
{
public function __construct($form)
{
$this->form = $form;
}
public function showForm(){
echo $this->form;
}
public static function create($form){
//put logic for picking object or whatever here!
$object = new MakeCall($form);
//Do more initializing if you want here!
return $object;
}
}
$form = "asdasd";
$model= MakeCall::create($form);
$model->showForm();
我在几个不同的地方打电话:
$model=NEW MakeCall($form);
我已经更新了 MakeCall
class 几项更改,我想在给定日期后生效。我把原来的class改名为MakeCallOld
我怎样才能把电话留给:
$model=NEW MakeCall($form);
完整并在 MakeCall
内执行此操作:
class MakeCall
{ ...
public function __construct($form)
{
//Use Legacy MakeCallOld for stuff before 2016-10-01
if ($form['date']<'2016-10-01') {
$object=NEW MakeCallOld($form);
return $object;
}
$this->perform several functions and set variables...
这目前只是 returns class MakeCallOld
的一个空对象,但 运行 MakeCallOld
中的构造函数似乎没有,因为所有属性都是空的。我只想将 MakeCallOld
的整个对象放入 $model
.
构造函数没有 return 值,所以说 return $object
你只是在那里结束控制流,什么都不做,永远不会到达 "perform several functions and set variables"。根据您的结构,您应该考虑让 MakeCall
继承自 MakeCallOld
,然后您可以简单地在 MakeCall
的构造函数中调用 parent::__construct();
。
您需要的是静态工厂构造函数。这是您应该根据参数添加初始化逻辑或切换构造函数的方式。
class MakeCall
{
public function __construct($form)
{
$this->form = $form;
}
public function showForm(){
echo $this->form;
}
public static function create($form){
//put logic for picking object or whatever here!
$object = new MakeCall($form);
//Do more initializing if you want here!
return $object;
}
}
$form = "asdasd";
$model= MakeCall::create($form);
$model->showForm();