看来你可以在Laravel写作工厂。
根据doumentation: https://laravel.com/docs/5.3/database-testing#writing-factories
它似乎与模型/数据库相关的工厂。
是否可以为非模型相关的工厂编写?
例如两个类:
class Car {
public function drive() { }
}
Class Bike {
public function ride() { }
}
我不想使用(new Car)->drive()
而是使用Transport
工厂来对班级进行分类。
答案 0 :(得分:0)
我做这样的事情
class Transport
{
public static function build($vehicle)
{
return new $vehicle;
}
}
interface Vehicle
{
public function drive();
}
class Car implements Vehicle
{
public function drive()
{
// the way a car drives
}
}
class Bike implements Vehicle
{
public function drive()
{
// the way a bike drives
}
}
class Something
{
public function someFunc()
{
Transport::build('Car')->drive();
}
}
此处没有针对drive()
和ride()
类的Car
和Bike
等单独方法,我只添加了drive()
方法。然后Bike
和Car
绑定到Vehicle
合同。
那么我们只需要将Car
或Bike
传递给Transport::build('Car')->drive();
答案 1 :(得分:0)
我们可以按照以下步骤创建Transport::build('car')->drive();
之类的Factory模式。
//Create a class for the dynamic object
class Transport{
public static function build($vehicle)
{
return new $vehicle;
}
}
//Normal class
class Car {
public function drive() {
}
}
//call factory class for dynamic object
Transport::build('Car')->drive();