怎样才可以有从第三方包装的纯PHP对象继承Laravels雄辩模型的所有的善良? 见下文:
下面的模型类是由第三方软件包 。 它是框架和ORM无关 ,写在普通的PHP。 我不能改变它,只能延长它。 (仅举例)
class APlainPHPModelFromLibrary {
protected $someAttribute;
protected $someOtherAttribute;
//...
public function someFunction()
{
// ...
}
}
这里是我的这个模型类的Laravel雄辩版本。 我需要从这个类扩展侃侃而谈 。 此外,我需要从上述VanillaPHPModel延伸,以便它能够继承雄辩的方法。 我看不出解决的办法。
class MyEloquentModelVersion extends Eloquent ... extends APlainPHPModelFromLibrary { // ??
$guarded = [
'EloquentGoodness',
'EloquentGoodness'
];
public function belongsTo()
{
//...Eloquent goodness
}
public function hasMany()
{
//,..Eloquent Goodness
}
}
这仅仅是一个建议。 你可能会能够解决它在其他多个方面。
ThirdPartyServiceProvider.php
<?php
class ThirdPartyServiceProvider extends \Illuminate\Support\ServiceProvider {
public function register() {
$this->app->bind('ThirdPartyService', function($app, $third_party_model) {
return new ThirdPartyService($third_party_model, new MyEloquentModelVersion());
});
}
}
ThirdPartyService.php
<?php
class ThirdPartyService {
public $third_party_model = null;
public $my_eloquent_model_version = null;
function __construct(APlainPHPModelFromLibrary $third_party_model, MyEloquentModelVersion $my_eloquent_model_version) {
$this->third_party_model = $third_party_model;
$this->my_eloquent_model_version = $my_eloquent_model_version;
}
function translate() {
// conversion code
return $this;
}
}
在你的控制器:
$tpsp = App::make('ThirdPartyServiceProvider', $third_party_model);
$tpsp->translate()->my_eloquent_model_version;