我正在尝试使用for循环创建公共功能 这是我想做的事的一个例子:
class databaseController extends Controller
{
for ($i=0; $i < 5; $i++) {
# code...
public function create()
{
// dd('hoi_tb1_create');
if (Auth::guard('admin')->user()->level == 2) {
Schema::connection('mysql')->create('tb' . $i, function (
$table
) {
$table->increments('id');
});
}
// get all products
}
}
}
你知道怎么做吗?
预先感谢 声音
答案 0 :(得分:0)
您可以使用第二个功能使它起作用
class LoopController extends Controller
{
public function create($i)
{
if (Auth::guard('admin')->user()->level == 2) {
Schema::connection('mysql')->create('tb' . $i, function ($table) {
$table->increments('id');
});
}
}
public function createMany()
{
for($i = 0; $i < 5; $i++) {
$this->create($i);
}
}
}
create函数接受$ i参数,但不会直接从路由中调用它,而是调用createMany(),其中包含一个for循环。这将调用create 5次,每次都传递其iterater值,例如0、1、2、3、4。
或者,如果希望独立调用这些函数,则可以使用PHP的magic方法动态调用create函数。例如,您可以在创建后获取所有数字,然后调用create(numbers);
class LoopController extends Controller
{
public function create($i)
{
if (Auth::guard('admin')->user()->level == 2) {
Schema::connection('mysql')->create('tb' . $i, function ($table) {
$table->increments('id');
});
}
}
public function __call($method, $parameters)
{
if (preg_match('/create([\d]+)/', $method, $matches)) {
return $this->create($matches[1]);
}
throw new \BadMethodCallException("Method " . get_class($this) . "::$method does not exist");
}
}
所以现在,如果您调用LoopController-> create48();然后它将调用-> create(48);