Добрый день,PHP forward_static_call_array в контексте нестатического класса
У меня есть следующие TestCase, что я не могу получить, чтобы работать должным образом.
<?php
class TestClass{
private $obj = NULL;
public function __construct(){
$this->obj = new SubClass();
}
public function test(){
forward_static_call_array('SubClass::callMe', func_get_args());
}
}
class SubClass{
public function callMe(){
echo 'YES WE FETCHED : '.PHP_EOL.print_r(func_get_args(), true);
}
}
$test = new TestClass();
$test->test('John', 'Doe', array('Peter', 'Dora'), array('Anthony', 'William'));
?>
Как видите, у меня есть два класса.
1 TestClass
Это не статический класс, который неоспоримый называют:
$test = new TestClass();
$test->test('John', 'Doe', array('Peter', 'Dora'), array('Anthony', 'William'));
В TestClass() загружает с конструктором нового класса внутри родительского класса.
public function __construct(){
$this->obj = new SubClass();
}
Затем я загружаю метод класса под названием тест() с помощью следующей строки:
$test->test('John', 'Doe', array('Peter', 'Dora'), array('Anthony', 'William'));
Затем этот метод извлекает аргументы функции с: func_get_args() и передает все аргументы с forward_static_call_array()
Как следует из:
public function test(){
forward_static_call_array('SubClass::callMe', func_get_args());
}
Вызов его:
- SubClass :: CallME
делает это статический класс. И логически я получаю сообщение об ошибке:
Строгие стандарты: forward_static_call_array() ожидает параметр 1, чтобы быть действительным обратного вызова, не статический метод SubClass :: CallME() не должен вызываться статически N: \ WAMP \ WWW \ Test \ forward_arguments \ testclass.php на линии 15
2 SubClass
подкласс извлекает аргументы следующим образом:
public function callMe(){
echo 'YES WE FETCHED : '.PHP_EOL.print_r(func_get_args(), true);
}
Теперь с этой установкой уведомление об ошибке является логическим. И TestClass переменная класса
private $obj = NULL;
прибудет совершенно избежать.
$this->obj = new SubClass();
Проблема конкретных
Проблема заключается в следующем один:
forward_static_call_array('SubClass::callMe', func_get_args());
Синтаксис должны быть разными. Но я понятия не имею, как это сделать. Спасибо заранее!
Edit:
Проблема заключается в том, что я знаю, как назвать статические методы класса. Но я не знаю, как вызвать метод в загруженном классе.
Решение(предоставляется: Rizier123)
<?php
class TestClass{
private $obj = NULL;
public function __construct(){
$this->obj = new SubClass();
$this->obj->SetExtra(array('Karel', 'Anton'));
}
public function test(){
forward_static_call_array([$this->obj, 'callMe'], func_get_args());
}
}
class SubClass{
private $SetVar = NULL;
public function callMe(){
$Array = $this->ArrayStrUp(array_merge(func_get_args(), $this->SetVar));
echo 'YES WE FETCHED : '.PHP_EOL.print_r($Array, true);
}
public function SetExtra($vars){
$this->SetVar = $vars;
}
private function ArrayStrUp($Arr){
foreach($Arr as $key => $value){
if(is_array($value) === true){
$Arr[$key] = $this->ArrayStrUp($value);
}
else{
$Arr[$key] = strtoupper($value);
}
}
return($Arr);
}
}
$test = new TestClass();
$test->test('John', 'Doe', array('Peter', 'Dora'), array('Anthony', 'William'));
?>
Что бы вы ожидаете в качестве выхода и каков ваш выходной ток? Также у вас нет каких-либо статических функций в ваших классах! – Rizier123
Я знаю. И я хочу использовать переменную класса $ obj Так что это должно быть 'forward_static_call_array ('$ this-> obj-> callMe', func_get_args());' Но это не работает: -o –