我的代码有问题。我有这样的代码:
<?php
include('php/SelectHistory.php');
include('php/SelectSmallHistoryUser.php');
include('php/SelectSmallHistoryProject.php');
include('php/SelectSmallHistoryFunctionality.php');
$newHistoryRow = SelectHistory();
echo "<table width='100%'>";
if (count($newHistoryRow) > 0)
{
foreach ($newHistoryRow as $current)
{
$chosenUser = SelectSmallHistoryUser($current->userID);
$chosenProject = SelectSmallHistoryProject($current->projectID);
$chosenFunctionality = SelectSmallHistoryFunctionality($current->functionalityID);
echo "<tr>";
echo "<td>" . $chosenUser->fullName . " was busy with " . $chosenFunctionality->functionalityName . " on " . $chosenProject->projectName . " at " . $current->lastModifiedDate;
echo "</tr>";
unset($chosenUser);
unset($chosenProject);
unset($chosenFunctionality);
}
}
else
{
echo "<tr><td>No History To Display.</td></tr>";
}
echo "</table>";
?>
我遇到的问题是在循环中,它声明了一个驻留在类中的方法。现在因为它正在处理来自数据库的数据,如果事物的数量超过一个,我得到一个“已经声明的类”错误。
有没有办法可以解决这个问题,还是有其他方法可以使用?
答案 0 :(得分:1)
我猜一个新的。 $var = new SelectHistory();
答案 1 :(得分:1)
不是像上面那样创建对象,而是应该定义一个静态函数来获取所需的数据。您可以在不创建对象的情况下调用此函数。
SelectSmallHistoryUser::getData($current->userID);
使用循环创建对象是不可接受的。 Read more
答案 2 :(得分:1)
这是创建类的正确方法:
class TestClass {
public $property;
//some other properties
function __construct($id) {
$this->property=$id;
//do some other stuff
}
//some other functions
}
创建类实例的正确方法是:
$test = new TestClass($id);
注意__construct()
函数和new
关键字,然后再次尝试执行脚本。
答案 3 :(得分:0)
在循环中声明或包含类并不好。 但请检查一下:http://www.php.net/manual/en/function.class-exists.php