При использовании доктрины я натыкаюсь на эти 2 слова: аксессуар и мутатор.Аксессуар и мутатор?
Используются ли они только в доктрине или они специфичны для php?
и что они означают?
благодаря
При использовании доктрины я натыкаюсь на эти 2 слова: аксессуар и мутатор.Аксессуар и мутатор?
Используются ли они только в доктрине или они специфичны для php?
и что они означают?
благодаря
Они просто фантазии условия для получения и установки.
class MyClass
{
private $prop;
// Accessor (or Getter)
public function getProp()
{
return $this->prop;
}
// Mutator (or Setter)
public function setProp($value)
{
$this->prop = $value;
}
}
Если я правильно вас понимаю, эти 2 являются специфическими для того, чтобы я предполагал какой-либо объектно-ориентированный язык программирования. Дело в том, что accessor - это метод или функция, которая обеспечивает доступ к закрытым полям вашего класса, а метод mutator позволяет изменять частные поля. Я могу продолжить писать об этом, но я предлагаю вам просто Google, и вы получите много информации об этом. Его все об инкапсуляции < - предложите вам найти этот термин.
Мне нравится думать о них как о регулярных функциях, которые просто служат известной общеизвестной цели ... ничего более. – m0s
Разве мы не должны использовать __get and __set in php5 and later?
Это не просто разные термины для геттеров и сеттеров, по крайней мере, в Ларавеле.
Чтобы процитировать документацию: «Аксессоры и мутаторы позволяют форматировать атрибуты Eloquent при извлечении их из модели или настройке их значения».
https://laravel.com/docs/master/eloquent-mutators
Таким образом, можно сказать, что методы получения и установки являются подмножеством аксессорах и мутаторов, изменяющих данные с коэффициентом, равным нулю.
Положите это иначе, если бы я хотел получить «стоимость» необработанного поля из таблицы, я бы использовал getter. Если бы я хотел, чтобы это поле было выражено и отформатировано в фунтах и пенсии, я мог бы использовать аксессуар.
Есть и другие способы, которыми я могу заниматься, но это один из вариантов.
Не могли бы вы объяснить «изменение в нулевом значении»? Благодаря! –
Конечно. Аксессоры и мутаторы меняют значение перед сохранением или возвратом нового значения. Setters и получить его не меняют значение. Поэтому, когда я сказал «в нулевом значении», я просто имел в виду «никаких изменений». Вы ничего не добавили к значению. – Puzbie
И, чтобы уточнить, это общие термины, используемые в объектно-ориентированном программировании, независимо от языка или структуры. – nickf
так почему они называют их аксессуарами и мутаторами вместо геттеров и сеттеров? они не магические методы, то есть они, если я набираю setProp(), но не определили для него один метод, он не будет создан автоматически? –
Аксессуар @fayer и мутатор - это более общие термины, используемые в информатике. геттер и сеттер более случайны, я думаю ... может быть, сленг. До тех пор, как я знаю, он не будет волшебным образом создавать переменные для вас в php ... нужно посмотреть спецификации ... довольно уверен, что это не так. – m0s