Создание классов в объектно-ориентированном PHP

  <?php
 // Selects 1
$stmt = $db->prepare("SELECT * FROM mainInfo WHERE type='1' ORDER BY name");
$stmt->execute();
$resultSet = $stmt->get_result();
$result_1 = $resultSet->fetch_all();

// Selects 2
$stmt = $db->prepare("SELECT * FROM mainInfo WHERE type='2' ORDER BY name");
$stmt->execute();
$resultSet = $stmt->get_result();
$result_2 = $resultSet->fetch_all();

// Selects 3
$stmt = $db->prepare("SELECT * FROM mainInfo WHERE type='3' ORDER BY name");
$stmt->execute();
$resultSet = $stmt->get_result();
$result_3 = $resultSet->fetch_all();

У меня есть 3 отдельных оператора выбора, в которых изменяется только «тип». возвращаемые значения позже используются в другом коде. Могу ли я создать класс, в котором есть только 1 оператор для всех 3 типов, и быть используется позже в:

<?php foreach($result_1 as $item){
    echo '
      <div class = "col-md-3">
        <div class = "square">
          <input name = "cb_id[]" class = "checkBox" type = "checkbox" 
    value = "'.$item[0].'">
          <p>'.$item[0].' <br> ' . $item[1] .' <br> ' . $item[2] . 
    '$<br>Size: ' .$item[4] . ' MB</p>
        </div>
       </div>';}
  ?>

<?php foreach($result_2 as $item){
    echo '
      <div class = "col-md-3">
        <div class = "square">
          <input name = "cb_id[]" class = "checkBox" type = "checkbox" 
 value = "'.$item[0].'">
          <p>'.$item[0].' <br> ' . $item[1] .' <br> ' . $item[2] . 
 '$<br>Weight: ' .$item[5] . ' KG</p>
        </div>
      </div>';}
  ?>

  <?php foreach($result_3 as $item){
      echo '
        <div class = "col-md-3">
          <div class = "square">
            <input name = "cb_id[]" class = "checkBox" type = "checkbox" 
   value = "'.$item[0].'">
            <p>'.$item[0].' <br> ' . $item[1] .' <br> ' . $item[2] . 
   '$<br>Dim: ' .$item[6] . 'X' .$item[7] . 'X' .$item[8] . '</p>
          </div>
        </div>';}
    ?>

Я сам смущен этим, поэтому любая помощь приветствуется

Почему не просто функция? Почему класс?

deceze 05.07.2018 16:16

Я думаю, что здесь было бы разумно выполнить какую-либо функцию. Он принимает Type в качестве входных данных и будет параметром в вашем sql чтобы ты мог bindparam. Затем вы можете просто вызвать функцию и передать тип. Эта функция мог является методом внутри класса, но, не зная вашего кода, я не мог предположить, что будет иметь здесь смысл в качестве класса (возможно, класса maininfo?)

JNevill 05.07.2018 16:18

Если вы хотите пройти через класс, создайте файл класса и создайте там, где вам нужно определить класс, и определите общедоступную функцию, в которой вы берете ввод 1, 2, 3, ... и возвращаете массив, который вам нужно поймать из интерфейса и отображать в виде таблицы.

PHP Web 05.07.2018 16:22
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
3
57
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Первый подход. используя цикл:

$results = [];
for ($i = 1; $i <= 10; $i++) {
  $stmt = $db->prepare("SELECT * FROM mainInfo WHERE type='$i' ORDER BY name");
  $stmt->execute();
  $resultSet = $stmt->get_result();
  array_push($results, $resultSet->fetch_all());
}

Второй подход. используя функцию:

function returnResult($type){
  $stmt = $db->prepare("SELECT * FROM mainInfo WHERE type='$type' ORDER BY name");
  $stmt->execute();
  $resultSet = $stmt->get_result();
  return $resultSet->fetch_all();
}
$result1 = returnResult(1);
$result2 = returnResult(2);
$result3 = returnResult(2);

третий подход OO PHP

class Foo { 

  public function returnResult($type){
    $stmt = $db->prepare("SELECT * FROM mainInfo WHERE type='$type' ORDER BY name");
    $stmt->execute();
    $resultSet = $stmt->get_result();
    return $resultSet->fetch_all();)
  }
} 
$SomeObject = new Foo;
$result1 = $SomeObject->returnResult(1);
$result2 = $SomeObject->returnResult(2);
$result3 = $SomeObject->returnResult(3);

Я написал здесь код. Не тестировал. На вашем месте я бы использовал первый подход

PS. конечно, вы должны указать $ db во всех трех подходах.

Третий подход был тем, что я искал, спасибо за такой быстрый ответ

Erick Vazovsky 05.07.2018 16:57

Другие вопросы по теме