Мне нужно вызвать функцию внутри метода. Эта функция требует доступа к частной собственности. Этот код:
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
настоящим методом вместо того, чтобы вложить его?
test2 включен из другого файла.
Обратите внимание, что функции, вложенные в метод класса, НЕ выполняются в области действия класса. Так что нет особого смысла использовать такие вложенные функции.
Мой вариант использования - включить разные файлы, содержащие разные функции test2.
Не уверен, зачем вам объявлять функцию внутри метода, но если это то, что вы хотите сделать, то передайте частный член в качестве параметра этой функции.
<?php
class tc {
private $data=123;
public function test() {
function test2($data) {
echo $data;
}
test2($this->data);
}
}
$a=new tc();
$a->test();
Кажется, это ответ.
@ dj50 рад помочь.
Поскольку test2 - это функция в методе тестирования, а не метод в объекте tc. Вы не находитесь в области видимости объекта.