Attribute.php
TLDR
This file contains the Attribute
class, which represents an attribute accessor/mutator in Laravel's Eloquent ORM. It provides methods for creating new attribute accessors/mutators, enabling/disabling caching for the attribute, and more.
Classes
Attribute
The Attribute
class represents an attribute accessor/mutator in Laravel's Eloquent ORM. It has the following properties:
-
$get
: The attribute accessor (callable). -
$set
: The attribute mutator (callable). -
$withCaching
: Indicates if caching is enabled for this attribute (boolean). -
$withObjectCaching
: Indicates if caching of objects is enabled for this attribute (boolean).
The class provides the following methods:
-
__construct(callable $get = null, callable $set = null)
: Creates a new attribute accessor/mutator with optional getter and setter callbacks. -
make(callable $get = null, callable $set = null): static
: Creates a new attribute accessor/mutator with optional getter and setter callbacks (static method). -
get(callable $get): static
: Creates a new attribute accessor with a getter callback (static method). -
set(callable $set): static
: Creates a new attribute mutator with a setter callback (static method). -
withoutObjectCaching(): static
: Disables object caching for the attribute (instance method). -
shouldCache(): static
: Enables caching for the attribute (instance method).
<?php
namespace Illuminate\Database\Eloquent\Casts;
class Attribute
{
/**
* The attribute accessor.
*
* @var callable
*/
public $get;
/**
* The attribute mutator.
*
* @var callable
*/
public $set;
/**
* Indicates if caching is enabled for this attribute.
*
* @var bool
*/
public $withCaching = false;
/**
* Indicates if caching of objects is enabled for this attribute.
*
* @var bool
*/
public $withObjectCaching = true;
/**
* Create a new attribute accessor / mutator.
*
* @param callable|null $get
* @param callable|null $set
* @return void
*/
public function __construct(callable $get = null, callable $set = null)
{
$this->get = $get;
$this->set = $set;
}
/**
* Create a new attribute accessor / mutator.
*
* @param callable|null $get
* @param callable|null $set
* @return static
*/
public static function make(callable $get = null, callable $set = null): static
{
return new static($get, $set);
}
/**
* Create a new attribute accessor.
*
* @param callable $get
* @return static
*/
public static function get(callable $get)
{
return new static($get);
}
/**
* Create a new attribute mutator.
*
* @param callable $set
* @return static
*/
public static function set(callable $set)
{
return new static(null, $set);
}
/**
* Disable object caching for the attribute.
*
* @return static
*/
public function withoutObjectCaching()
{
$this->withObjectCaching = false;
return $this;
}
/**
* Enable caching for the attribute.
*
* @return static
*/
public function shouldCache()
{
$this->withCaching = true;
return $this;
}
}