我的模型中有两个变量,我在一些函数中使用
com.myexample.app.Activities
我如何提取它们并使它们全局化才能在我的模型中使用它们?
我知道它必须受到保护......但我不确定我是否需要这样说:
$firstDayThisYear = Carbon::create(date('Y'), 1, 1, 0);
$lastDayThisYear = Carbon::create(date('Y'), 12, 31, 0);
答案 0 :(得分:2)
如果您要在一个模型中使用这些变量,请执行以下操作:
protected $firstDayThisYear;
public function __construct(array $attributes = [])
{
parent::__construct($attributes);
$this->firstDayThisYear = Carbon::create(date('Y'), 1, 1, 0);
}
然后将其与$this->firstDayThisYear
一起使用。
此外,你可以通过以下方式获得今年的开始和一年的最后一天:
Carbon::now()->startOfYear();
Carbon::now()->endOfYear()->startOfDay();
我猜它更具可读性。
答案 1 :(得分:1)
如果您只想在模型内部使用此字段,请将其声明为私有。
答案 2 :(得分:0)
您尝试这样做的方式不会起作用,因为PHP不会让您使用"表达式#34;"作为类似属性的默认值。
如果你坚持让他们static
,你应该创建一个静态方法来实现这一目标。你可以这样做:
class YourModel extends Model
{
protected static $firstDayOfThisYear;
protected static function firstDayOfThisYear()
{
if (!static::$firstDayOfThisYear) {
static::$firstDayOfThisYear = Carbon::create(date('Y'), 1, 1, 0);
}
return static::$firstDayOfThisYear;
}
public function useIt()
{
$firstDay = static::firstDayOfThisYear();
}
}