Я использую Couchbase PHP Sdk для запроса некоторых данных, и они внесли некоторые изменения с версии 2.x на 3.x. Прежде чем я мог легко получить некоторые показатели, теперь я получаю сообщение об ошибке> Он жалуется, что я не могу получить доступ к частному значению.
Неперехваченная ошибка: не удается получить доступ к частной собственности Couchbase\QueryResultImpl::$meta
Couchbase\QueryResultImpl Object
(
[status:Couchbase\QueryResultImpl:private] => 0
[meta:Couchbase\QueryResultImpl:private] => Couchbase\QueryMetaDataImpl Object
(
[status:Couchbase\QueryMetaDataImpl:private] => success
[request_id:Couchbase\QueryMetaDataImpl:private] => b1c2bfc4-31b1-4c17-9706-2d0b1e574505
[client_context_id:Couchbase\QueryMetaDataImpl:private] => d41ef78df23fffe4
[signature:Couchbase\QueryMetaDataImpl:private] => Array
(
[ModificationTimestamp] => json
)
[errors:Couchbase\QueryMetaDataImpl:private] =>
[warnings:Couchbase\QueryMetaDataImpl:private] =>
[metrics:Couchbase\QueryMetaDataImpl:private] => Array
(
[elapsedTime] => 13.425556ms
[executionTime] => 13.228202ms
[resultCount] => 1
[resultSize] => 47
[serviceLoad] => 0
)
)
[rows:Couchbase\QueryResultImpl:private] => Array
(
[0] => Array
(
[ModificationTimestamp] => 2022-03-14 13:06:42
)
)
)
Как и где мне это сделать?
Можно было бы с отражением: php.net/manual/en/reflectionproperty.setaccessible.php
На самом деле, такое поведение предусмотрено дизайном, и вы не должны получать доступ к закрытым членам... Если класс не находится под вашим контролем и в классе еще нет геттера/сеттера, то разработчик, вероятно, скрыл атрибут по уважительной причине.
Прежде всего, мне жаль, что я не использовал PHP, но вот как вы можете создать метод Геттер и сеттер для частной переменной, надеюсь, вы сможете его реализовать.
<?php
class Student {
private $sName;
public function setName($name) {
$this->sName = $name;
}
public function getName() {
return $this->sName;
}
}
$student = new Student; // create an object
//$student->sName = "error"; // this makes an error while it is Private: Fatal error: Uncaught Error: Cannot access private property
//echo $student->sName; // this makes an error while it is Private: Fatal error: Uncaught Error: Cannot access private property
$student->setName("MisterniceGuy"); // Set student name
echo $student->getName(); // MisterniceGuy
?>
Привет @MisterNiceGuy, Вы можете создать методы добытчик и сеттер для этого частного свойства.