我想创建一个程序,它从sql数据库中提取对象,并在将数据返回给用户之前根据一组函数处理对象。
它会像这样工作:
- 用户以javascript格式指定日期范围。
- 将日期范围发送到将其转换为的服务器上的php文件 一个SQL查询。
- sql查询会提取数据库中与日期匹配的所有数据 范围,并将每个匹配项及其相关信息存储为php 临时php文件中的类(参见下面的示例)。
- 主php程序然后根据一组函数处理临时php文件中的每个类,并将信息返回给用户。
醇>
示例临时php文件:
class ice_cream
{
$temperature = 0;
$texture = 'soft';
}
class hard_candy
{
$temperature = 20;
texture = 'hard';
}
处理类的函数示例:
function will_it_break_dentures($class_name)
{
//$class_name is passed to the function based on the classes available in temp file
$food_type_class = new $class_name();
$damage_potential_temperature = $food_type_class->temperature;
$damage_potential_temperature = $food_type_class->texture;
if($damage_potential_temperature >= 15) && ($damage_potential_texture === 'hard')
{
print("Don't eat it");
}
}
是否有更高效/安全的方法从数据库中提取数据并根据一组函数对其进行处理?这是从数据库中提取数据进行处理的标准方法吗?第3项似乎很可疑,但这是我能想到的最好的。任何有关最佳实践的相关信息资源都会受到赞赏。
答案 0 :(得分:2)
您的类定义应该定义对象的属性,而不是值。它应该静态定义,而不是在运行时动态定义。在运行时,您可以创建此类的实例并填充每个实例的数据。
尝试这样的事情:
class Food {
var $name;
var $temp;
var $texture;
// Constructor
public function food($name, $temp, $texture) {
$this->name = $name;
$this->temp = $temp;
$this->texture = $texture;
}
public function breaksDentures() {
if($this->temp >= 15) && ($this->texture === 'hard')
return true;
else
return false;
}
}
并像这样使用它:
function processFoods($daterange) {
$query = build_query_from_daterange($daterange);
$result = mysql_query($query);
while($row = mysql_fetch_assoc($result)) {
$food = new Food($row['name'], $row['temp'], $row['texture']);
// Now $food is an instance of the Food class populate with the values
// from the db, e.g., 'ice cream', 0, 'hard'.
if $food->breaksDentures() {
print("Don't eat it");
}
}
}
P.S。您可能希望了解面向对象的概念。你的问题很好,但表明对OO基础知识有些困惑。