Как я могу перезаписать защищенное свойство объекта?

-1

Это результат dd($followers):

LengthAwarePaginator {#401 ▼
  #total: 144
  #lastPage: 8
  #items: Collection {#402 ▼
    #items: array:18 []
  }
  #perPage: 20
  #currentPage: 1
  #path: "http://myurl.com/SocialCenter/public/twitterprofile/JZarif"
  #query: []
  #fragment: null
  #pageName: "page"
}

Теперь я хочу знать, как я могу перезаписать #total? Я имею в виду, что я хочу повторно инициализировать его до 18. Итак, это ожидаемый результат:

LengthAwarePaginator {#401 ▼
  #total: 18
  #lastPage: 8
  #items: Collection {#402 ▼
    #items: array:18 []
  }
  #perPage: 20
  #currentPage: 1
  #path: "http://myurl.com/SocialCenter/public/twitterprofile/JZarif"
  #query: []
  #fragment: null
  #pageName: "page"
}

Делает это возможно?


Отметил, что ни одна из этих работ не работает:

$followers->total = 18;
$followers['total'] = 18;
  • 4
    Почему это изменится с 144 на 18? Что ты на самом деле пытаешься сделать?
  • 0
    @Ohgodwhy Я пытаюсь сделать это
Теги:

2 ответа

1

Вы можете использовать отражение:

$reflection = new \ReflectionObject($followers);

$property = $reflection->getProperty('total');

$property->setAccessible(true);
$property->setValue(
    $followers,
    18
);

Для справки см.:

  • 0
    Что такое 9001 ?
  • 1
    Просто произвольное новое значение для свойства totals .
0

Вы должны выполнить функцию getter и setter.

Но вы можете использовать PHP-Reflections. Как этот пример:

<?php
class LengthAwarePaginator
{
    private $total = true;
}

$class = new ReflectionClass("LengthAwarePaginator");
$total = $class->getProperty('total');
$total->setAccessible(true);
$total->setValue(18);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню