3 回答
TA贡献2039条经验 获得超7个赞
尝试动态命名函数
public function getIsPastAttribute(): bool
{
return $this->isDate('isPast');
}
public function getIsFutureAttribute(): bool
{
return $this->isDate('isFuture');
}
public function isDate($tense): bool
{
return $this->date_period->map(static function ($date) use ($tense) {
/** @var Carbon $date */
return $date->$tense();
})->contains(false) === false;
}
TA贡献1772条经验 获得超5个赞
对于您提供的两种特定方法,您可以这样做:
public function getTimeAttribute($time): bool
{
return $this->date_period->map(static function ($date) use($time) {
/** @var Carbon $date */
return $time == 'future' ? $date->isFuture() : $date->isPast();
})->contains(false) === false;
}
您可以使用在主要方法中调用的较小的“子方法”来减少代码重复。而不是这样做:
public function f1() {
...a lot of duplicate code
}
public function f2() {
...a lot of duplicate code
}
你可以这样做:
private function helper() {
...a lot of duplicate code
}
public function f1() {
$this->helper();
}
public function f2() {
$this->helper();
}
您还可以查看特征
TA贡献1856条经验 获得超11个赞
我使用特征在许多控制器中使用相同的功能。
在 Http 目录中,创建一个名为 Traits 的新目录,这是一个 Trait 的示例:
应用程序/Http/Traits/MyTrait.php
<?php
namespace App\Http\Traits;
trait MyTrait{
public function myTraitFunction(){
...
}
}
您可以像这样在控制器中使用:
<?php
namespace App\Http\Controllers;
use App\Http\Traits\MyTrait;
class MyController extends Controller{
use MyTrait;
public function controllerFunction(){
//calling the trait function
$this->myTraitFunction();
...
}
}
- 3 回答
- 0 关注
- 130 浏览
添加回答
举报