Процесс извлечения данных из базы данных SQL - PullRequest
1 голос
/ 08 августа 2010

Я хочу создать программу, которая извлекает объекты из базы данных SQL и обрабатывает объекты в соответствии с набором функций, прежде чем возвращать данные пользователю.

Это будет работать так:

  1. Пользователь указывает диапазон дат в форме JavaScript.
  2. Диапазон дат отправляется в файл php на сервере, который преобразует его в SQL-запрос.
  3. Запрос sql извлекает все данные в базе данных, которые соответствуют дате диапазон, и сохраняет каждый соответствующий элемент и связанную с ним информацию как php класс во временном php-файле (см. пример ниже).
  4. Затем основная программа 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 кажется подозрительным, но это лучшее, что я мог придумать. Будем благодарны за любые соответствующие информационные ресурсы о наилучшей практике.

1 Ответ

2 голосов
/ 08 августа 2010

Ваше определение класса должно определять свойства объекта, а не значения.Он должен определяться статически, а не динамически во время выполнения.Во время выполнения вы создаете экземпляры этого класса и заполняете данные для каждого экземпляра.

Попробуйте что-то вроде этого:

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");
      }
   }
}

PS Вы можете освежить свои объектно-ориентированные концепции.Ваш вопрос хороший, но указывает на некоторую путаницу в основах ОО.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...