Как я могу получить доступ к частной собственности в Object

Я использую 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
                )
        )
)

Привет @MisterNiceGuy, Вы можете создать методы добытчик и сеттер для этого частного свойства.

AwatITWork 16.03.2022 22:03

Как и где мне это сделать?

MisterniceGuy 16.03.2022 22:29

Можно было бы с отражением: php.net/manual/en/reflectionproperty.setaccessible.php

Michael Bolli 16.03.2022 22:45

На самом деле, такое поведение предусмотрено дизайном, и вы не должны получать доступ к закрытым членам... Если класс не находится под вашим контролем и в классе еще нет геттера/сеттера, то разработчик, вероятно, скрыл атрибут по уважительной причине.

Lars Stegelitz 17.03.2022 00:33
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
4
39
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Прежде всего, мне жаль, что я не использовал 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

?>

Другие вопросы по теме