Как сделать черты делиться конфликтующими методами и свойствами в PHPPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как сделать черты делиться конфликтующими методами и свойствами в PHP

Сообщение Anonymous »

У меня есть эта черта
hasextendendroles.php

Код: Выделить всё

trait HasExtendedRoles
{
use HasRoles;
use HasExtendedPermissions {
HasExtendedPermissions::getPermissionClass insteadof HasRoles;
HasExtendedPermissions::scopePermission insteadof HasRoles;
HasExtendedPermissions::permissions insteadof HasRoles;
}

protected ?Form $currentForm = null;

public function forForm(string|int|Form $form): self
{
if (!$form instanceof Form) {
$form = Form::when(
is_numeric($form),
fn(Builder $q) => $q->where('id', $form),
fn(Builder $q) => $q->where('slug', $form)
)->firstOrFail();
}

$this->currentForm = $form;

return $this;
}
}
У меня также есть эта черта
em.hasextendendpermissions.phpобразной

Код: Выделить всё

trait HasExtendedPermissions
{
use HasPermissions;

protected ?Form $currentForm = null;

public function forForm(string|int|Form $form): self
{
if (!$form instanceof Forsm) {
$form = Form::when(
is_numeric($form),
fn(Builder $q) => $q->where('id', $form),
fn(Builder $q) => $q->where('slug', $form)
)->firstOrFail();
}

$this->currentForm = $form;

return $this;
}
}
< /code>
и в моей пользовательской модели < /p>
class User extends Authenticatable
{
use HasExtendedRoles;
}
< /code>
и в моем контроллере я делаю < /p>
dd($user->forForm($form)->permissions);
Теперь черта hasextendpermissions не следует укорениться в $ this-> currentform .
Но когда я делаю:

Код: Выделить всё

dd($user->forForm($form)->roles);
, который доступен через черту HasextendendRoles, это работает отлично, я думал о создании другого для формы метода внутри Hasextendendpermissions с отличием именем, но я надеюсь минимизировать код как можно больше.>

Подробнее здесь: https://stackoverflow.com/questions/794 ... ies-in-php
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»