【发布时间】:2019-05-08 19:22:31
【问题描述】:
在过去的几个月里,我一直在深入研究 Java,而我只是重新访问了 PHP。在 Java 中,我可以创建一个对象数组并像这样访问方法:
Jam jam = new Jam(1,"strawberry","December","false");
//creates an object with an id, a flavour, a useby and an opened status
所以如果我循环创建一些堵塞,我可能会有一个类似的数组
[0] => [id => 1,"stawberry"... etc
[1] => [id => 2, "raspberry"... etc]
现在我的果酱模型可能有类似的方法
update_opened(bool newStatus) {
this.openedStatus = newStatus;
}
所以现在我可以遍历我的 Jam 并调用该方法
for(...size of array) {
if(i == 1) {
array.get(i).update_opened(true);
}
}
现在我的果酱被打开了。我可以在我的应用程序周围传递这个对象,并在我需要/需要时访问该方法
在 PHP 中这似乎不会发生。我似乎每次都需要重新创建一组新对象,例如:
array_map(function($j) use ($jams) {
$j = new jam(....);
if($j->id == 1) $j->updateOpenedStatus(true);
return $jams[$j->id] = $j;
},
$jams);
我应该这样做还是我的对象应该保持原样?我想知道这是否是因为 Java 是一种编译语言,而不仅仅是一种像 PHP 这样的简单运行时风格,但我不知道这是否有意义。如果有人能对此有所了解,那将非常有用,可以帮助我更深入地了解该语言的工作原理。
(P.S. 我不是真的在做基于 Jam 的应用程序,那会很好吃)
【问题讨论】:
-
我不知道,
jam类是什么,它有id吗?它是否设置在某个地方?在您的函数中,您尝试使用$locations、$l和$ul这些来自哪里??? -
另外,您传入
$j,但随后将$j定义为新的jam,而您use($jams)却从未实际使用它。也许是你正在尝试做的项目符号列表。 -
@AbraCadaver - 是的,抱歉,我正在做一个现实生活中的问题广告,试图将其变成一个通用示例,但遗漏了一些参考资料。我的问题并不是关于函数本身以及是否正确分配等等 - 发布的代码是演示性的 - 关键是,在 java 中我可以创建一个对象一次,然后将它传递到一个数组中,然后使用该对象方法,但我不似乎无法在 php 中执行此操作。与其说是代码,不如说是关于 php 对象与 java 对象的理论应用
-
@AbraCadaver 简而言之,这确实是我的观点“此外,您传入 $j 但随后将 $j 定义为新果酱”
-
对此有何后续行动?