Доступ к свойству внутри функции, определенной в методе PHP

Мне нужно вызвать функцию внутри метода. Эта функция требует доступа к частной собственности. Этот код:

class tc {
  private $data=123;

  public function test() {
    function test2() {
      echo $this->data;
    }

    test2();
  }
}

$a=new tc();
$a->test();

возвращает следующую ошибку:

Неустранимая ошибка: использование $ this вне контекста объекта в ... в строке ...

Использование PHP 5.6.38. Как я могу это сделать?

Поскольку test2 - это функция в методе тестирования, а не метод в объекте tc. Вы не находитесь в области видимости объекта.

Jonnix 25.10.2018 17:46

И свойство является частным, что означает, что вы не можете получить доступ за пределами объекта.

Felippe Duarte 25.10.2018 17:47

Тем не менее, как я могу этого добиться?

dj50 25.10.2018 17:51

Почему бы вам не сделать test2 настоящим методом вместо того, чтобы вложить его?

Barmar 25.10.2018 17:51

test2 включен из другого файла.

dj50 25.10.2018 17:52

Обратите внимание, что функции, вложенные в метод класса, НЕ выполняются в области действия класса. Так что нет особого смысла использовать такие вложенные функции.

Barmar 25.10.2018 17:56

Мой вариант использования - включить разные файлы, содержащие разные функции test2.

dj50 25.10.2018 18: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 и хотите разрабатывать...
2
7
150
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Не уверен, зачем вам объявлять функцию внутри метода, но если это то, что вы хотите сделать, то передайте частный член в качестве параметра этой функции.

<?php 

class tc {
  private $data=123;

  public function test() {
    function test2($data) {
        echo $data;
    }

    test2($this->data);
  }

}

$a=new tc();
$a->test();

Кажется, это ответ.

dj50 25.10.2018 18:38

@ dj50 рад помочь.

nice_dev 25.10.2018 19:10

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