This is handy for accessing private methods but remember that things are normally private for a reason! Unit Testing is one (debatable) use case for this.
Example:
<?php
class Foo {
private function myPrivateMethod() {
return 7;
}
}
$method = new ReflectionMethod('Foo', 'myPrivateMethod');
$method->setAccessible(true);
echo $method->invoke(new Foo);
// echos "7"
?>
This works nicely with PHPUnit: http://php.net/manual/en/reflectionmethod.setaccessible.php
PHP.mk документација
ReflectionMethod::setAccessible
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Патека
reflectionmethod.setaccessible.php
Локална патека за оваа страница.
Извор
php.net/manual/en
Оригиналниот HTML се реупотребува и локално се стилизира.
Режим
Прокси + превод во позадина
Кодовите, табелите и белешките остануваат читливи во истиот тек.
Референца
reflectionmethod.setaccessible.php
ReflectionMethod::setAccessible
Референца за `reflectionmethod.setaccessible.php` со подобрена типографија и навигација.
ReflectionMethod::setAccessible
(PHP 5 >= 5.3.2, PHP 7, PHP 8)
ReflectionMethod::setAccessible — (PHP 5 >= 5.3.2, PHP 7, PHP 8)
Ги ескејпува специјалните знаци во стринг за употреба во SQL изјава
Оваа функција е DEPRECATED од PHP 8.5.0. Силно се обесхрабрува потпирањето на оваа функција.
= NULL
од PHP 8.4.0. Силно се обесхрабрува потпирањето на оваа функција.
public ReflectionMethod::setAccessible(bool
public ReflectionMethod::setAccessible(bool
$accessible): voidПостави ја пристапноста на методот Овозможува повикување на заштитен или приватен метод преку method.
Забелешка: ReflectionMethod::invoke()
Параметри
Вратени вредности
Не се враќа вредност.
Примери
Пример #1 Едноставна дефиниција на класа
<?php
class MyClass
{
private function foo()
{
return 'bar';
}
}
$method = new ReflectionMethod("MyClass", "foo");
$method->setAccessible(true);
$obj = new MyClass();
echo $method->invoke($obj);
echo $obj->foo();
?>Горниот пример ќе прикаже нешто слично на:
bar Fatal error: Uncaught Error: Call to private method MyClass::foo() from global scope in /in/qdaZS:16
Види Исто така
- Од PHP 8.1.0, повикувањето на овој метод нема ефект; сите методи се повикливи по дифолт. - Проверува дали методот е приватен
- ReflectionMethod::isPrivate() - Проверува дали методот е заштитен
Белешки од корисници 1 белешка
elitescripts2000 на yahoo точка com ¶
пред 14 години