php - 如何在php中创建包含对象的数组
问题描述
我想要一个包含对象的数组。例如。
public $aCarObjects = array();
$aCars = array('Audi','BMW','Ford');
foreach($aCars as $car){
array_push($aCarObjects, new Car($car));
}
// Simplified class
class Car implements C{
private $carName;
public function __construct($carName){
$this->carName = $carName;
}
}
interface C {}
这是我正在尝试的一个非常简短的版本。该类Car
包含有关汽车的一些信息。
当我Interface
C
在Car
课堂上使用时。我无法将对象添加到数组中。为什么呢?
解决方案
此错误与数组无关,它是一个类提升错误(功能?),通过将您的类定义移动到new Car
. 显然,如果 PHP实现了接口,则它们不会提升类定义。
这是该现象的一个最小示例。
作品:
new Foo();
class Foo {}
interface Bar {}
不:
new Foo(); # <-- error: Class 'Foo' not found
class Foo implements Bar {}
interface Bar {}
也许这是PHP 悲伤的候选人?
这是您的代码的工作版本,它还解决了public
第 1 行中的流浪关键字:
interface C {}
class Car implements C {
private $carName;
public function __construct($carName) {
$this->carName = $carName;
}
}
$aCarObjects = [];
$aCars = ['Audi', 'BMW', 'Ford'];
foreach ($aCars as $car) {
array_push($aCarObjects, new Car($car));
}
print_r($aCarObjects);
输出:
Array
(
[0] => Car Object
(
[carName:Car:private] => Audi
)
[1] => Car Object
(
[carName:Car:private] => BMW
)
[2] => Car Object
(
[carName:Car:private] => Ford
)
)
推荐阅读
- css - 可以在不重新设置颜色的情况下覆盖 CSS 框阴影距离吗?
- react-native - 用于 JWT 刷新令牌的 react-native 中的 httpOnly cookie
- azure-devops - 使用 Azure DevOps Pipeline(Linux 代理)的 Synopsys Coverity 配置
- android - Androidx Kotlin 使用 Gson,需要创建一个嵌套的 GSON 数据类
- python - 我有一个烧瓶脚本来创建 API,但无法使用 Windows 直通连接到 SQL Server Express
- python - 我可以用 zip() 对包含多个列表的列表进行变异吗?
- php - 将完成的 html 和 css 标头放在 Wordpress php 文件中的位置
- reactjs - 使用 Three.JS 的 ReactJS 应用程序。如何渲染 VRButton?
- laravel - Laravel 将日期附加到日志文件
- git - 使用 https 在同一台计算机上使用两个 github 帐户