我是 PHP 新手,遇到了一些奇怪的行为,这些行为可能是我的 PHP 版本(5.4.13)中的错误,也可能不是。我发现了一个例子,函数参数的顺序在函数声明中很重要。在以下示例中:
class Book {
function __construct() { }
public static function withDescriptors($isNotOrmObject, $isArray, $isScalar) {
$instance = new self();
// initialization here
return $instance;
}
}
调用 withDescriptors 会导致“数组到字符串转换”异常。调用 withDescriptors 时抛出错误,即。withDescriptors 从未真正执行过。但是,用数组参数切换对象参数解决了这个问题。IE
public static function withDescriptors($isArray, $isNotOrmObject, $isScalar){ ....
这是 PHP 的一个已知特性还是一个错误?
更明确地说:
class Book {
function __construct() { }
public static function withDescriptors($isNotOrmObject, $isArray, $isScalar) {
$instance = new self();
// initialization here
return $instance;
}
}
$book = Book::withDescriptors($isNotORMobject, $isArray, $isScalar);
失败和
class Book {
function __construct() { }
public static function withDescriptors($isArray, $isNotORMobject, $isScalar) {
$instance = new self();
// initialization here
return $instance;
}
}
$book = Book::withDescriptors($isArray, $isNotORMobject, $isScalar);
很好用。唯一的区别是参数序列,“这里的初始化”代码是相同的。