green-84
Новичок
Непонятность с __call
<?php
abstract class parentClass {
function __call($methodName, $methodParameters){
return new $methodName($methodParameters);
//return new $methodName($methodParameters[0]);
}
}
abstract class childClass extends parentClass {
}
class MyClass extends childClass {
function __construct() {
$arguments = func_get_args();
echo "MyClass construct parameters: "; print_r($arguments); echo "<br />";
$this->YourClass(1, 2, 3);
}
}
class YourClass extends childClass {
function __construct() {
$arguments = func_get_args();
echo "YourClass construct parameters: "; print_r($arguments); echo "<br />";
}
}
$MyObject = new MyClass(1, 2, 3);
?>
Выводит:
MyClass construct parameters: Array ( [0] => 1 [1] => 2 [2] => 3 )
YourClass construct parameters: Array ( [0] => Array ( [0] => 1 [1] => 2 [2] => 3 ) )
Кто может объяснить, почему MyClass construct parameters отличны от YourClass construct parameters?
<?php
abstract class parentClass {
function __call($methodName, $methodParameters){
return new $methodName($methodParameters);
//return new $methodName($methodParameters[0]);
}
}
abstract class childClass extends parentClass {
}
class MyClass extends childClass {
function __construct() {
$arguments = func_get_args();
echo "MyClass construct parameters: "; print_r($arguments); echo "<br />";
$this->YourClass(1, 2, 3);
}
}
class YourClass extends childClass {
function __construct() {
$arguments = func_get_args();
echo "YourClass construct parameters: "; print_r($arguments); echo "<br />";
}
}
$MyObject = new MyClass(1, 2, 3);
?>
Выводит:
MyClass construct parameters: Array ( [0] => 1 [1] => 2 [2] => 3 )
YourClass construct parameters: Array ( [0] => Array ( [0] => 1 [1] => 2 [2] => 3 ) )
Кто может объяснить, почему MyClass construct parameters отличны от YourClass construct parameters?
